web-dev-qa-db-ja.com

Laravel PDOException SQLSTATE [HY000] [1049]不明なデータベース 'forge'

MySQLデータベースへの接続にLaravelを使用しています。

私はこの例外を受け取りました:

PDOException
SQLSTATE[HY000] [1049] Unknown database 'forge'

これは私のconfig.database.phpです

'mysql' => array(
            'driver'    => 'mysql',
            'Host'      => 'localhost',
            'database'  => 'laravel',
            'username'  => 'Anastasie',
            'password'  => 'A@Laurent',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

エラーがPDOデータベースを参照しているのはなぜですか?そして、なぜforgeデータベース名ですか?すでに変更しました。

MySQLデータベースを使用していることをLaravelに伝えるために何かする必要がありますか?

アップデート1

User.phpファイルでこの行protected $table = 'users';を見つけました。データベースのテーブルがuserではなくusersであるため、protected $table = 'user';に変更しました。

更新2

ルートにこれを書きました

Route::resource('users', 'UsersController');

コントローラーフォルダーにUsersController.phpを追加しました

そしてUsersController.phpの中に私はこれを持っています:

class UsersController extends BaseController {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        $users = User::all();
        return View::make('users.index', compact('users'));
    }

このURLをhttp://localhost:8082/laravel/public/users/と呼びます

Laravel 4.2でWindows 7を使用しています

前もって感謝します

20

そのようなキャッシュをクリアする必要があります(古い構成がキャッシュファイルにあるため)。

php artisan cache:clear

Pdoエラーは、ファクトLaravel= mysqlに接続するためにpdoドライバーを使用してください

19
Freelancer
  1. 最初に、関連するデータベースを作成する必要があります。
  2. 次に:php artisan cache:clear
  3. php artisan migrate:install

あなたの問題が解決されることを願っています。

7
user5320639

PhpMyAdmin(またはお好みのもの)を使用して、「forge」というデータベースを作成し、php artisan migrateコマンドとそれはすべて働いた。

3
Joey Garcia

注:mydatabaseの代わりにmydatabaseなどのデータベース名の前に誤ってスペースがあった場合、phpmyadminはスペースを表示しませんが、コマンドラインインターフェイスから実行するとmysql -u the_user -pshow databasesなどのmysqlの場合、スペースを確認できます。

3
dud3

デフォルトのデータベース設定を上書きする環境固有の設定ファイルがあるように聞こえます。おそらくapp/config/local/database.php

3
Martin Bean

私は同じ問題を抱えていました...あなたがあなたのDB名とユーザー名を設定し、.envファイルを正しく渡し、それがまだ動作しない場合、ターミナルでブローコードを実行します:(これは以前のアプリから残ったキャッシュを消去します)

php artisan cache:clear

そして、コマンドphp artisan serveを再度実行します(実行している場合は停止してから再度実行します)

時々DB_CONNECTION=mysqlそして、SQLiteデータベースを使用します。その解決策は、DB_CONNECTION=sqlite。それが役に立てば幸い

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=C:\xampp\htdocs\jbtibl\database\database.sqlite
DB_USERNAME=root
DB_PASSWORD=
0
Izaz Khan

OK、解決策が見つかりました。

ファイルdatabase.phpのデフォルトでは、「mysql」部分になります。

 'mysql' => [
            'driver' => 'mysql',
            'Host' => env('DB_Host', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

値を変更するだけです:

'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),

データベース名(持っていない場合は作成する必要があります)およびそのデータベースユーザー名

このような

'database' => env('DB_DATABASE', 'MyDatabase'),
'username' => env('DB_USERNAME', 'MyUsername'),
0
Mistura

laravelフォルダに.envファイルが重複していないことを確認してください。存在する場合は削除してください。.envファイルのみを保持してください。

0
Farhad

この問題に何度も遭遇しましたが、Vagrantを介してlaravelを実行していることに注意してください。

  • 数回再試行してください(ページを更新)
  • Vagrantのリロード(Vagrant reload)

浮浪者(つまり、MAMP)の代わりにサーバーをリロードしてみてください。

0
michaeltintiuc