web-dev-qa-db-ja.com

データベース[]は構成されていませんLaravel 5

Phpmyadminと新しいテーブルに新しいデータベースを作成します。

それから

    public function next(Request $request){
    $langs = DB::connection('mydb')->select('select * from lang');
    }

そして得る

Database [compgen] not configured.

私の.envで

DB_Host=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=123

私のconfig/database.phpで

        'mysql' => [
        'driver'    => 'mysql',
        'Host'      => env('DB_Host', 'localhost'),
        'database'  => env('DB_DATABASE', 'test'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', '123'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'test_',
        'strict'    => false,
    ],
8
Viktor

単一の接続を使用しているため、指定する必要はありません。

_$langs = DB::table('lang')->get();
_

connection()メソッドは、 複数のDB接続 で作業している場合にのみ使用してください。

5
Alexey Mezenin

私の場合、2つのdb接続を使用しましたが、2番目に追加されたものはキャッシュされませんでした。コマンド呼び出しphp artisan config:cacheはトリックを行いました。

何が起こっているのかを確認するには、$connectionsメソッドでDatabaseManager->configure変数を出力するだけで十分です。

9
Arthur Kushman

私の場合、それは悪いデータベースのユーザー名でした。 config/database.phpと.envファイルで設定しましたが、一方は他方とは異なりました。検索時にこのスレッドが見つかりました。これは誰かを助けるかもしれないと思いました。

3
Andrew Fox

誰もがこれにつまずく-Laravel 5.4以降を使用している場合、config/database.phpで新しいデータベース接続をセットアップできます。

    'mysql_test' => [
        'driver'      => 'mysql',
        'Host'        => env('DB_Host', '127.0.0.1'),
        'port'        => env('DB_PORT', '3306'),
        'database'    => env('DB_DATABASE_TEST', 'forge'),
        'username'    => env('DB_USERNAME_TEST', 'forge'),
        'password'    => env('DB_PASSWORD_TEST', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset'     => 'utf8mb4',
        'collation'   => 'utf8mb4_unicode_ci',
        'prefix'      => '',
        'strict'      => false,
        'modes'       => [
            'ONLY_FULL_GROUP_BY',
            'STRICT_TRANS_TABLES',
            'NO_ZERO_IN_DATE',
            'NO_ZERO_DATE',
            'ERROR_FOR_DIVISION_BY_ZERO',
            'NO_AUTO_CREATE_USER',
            'NO_ENGINE_SUBSTITUTION',
        ],
        'engine' => null,
    ],

3つの新しいenv変数DB_USERNAME_TESTDB_PASSWORD_TESTDB_DATABASE_TESTを作成しました

.envを次のように編集します

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword

構成が更新されていることを確認してください:php artisan config:cache

次のように、新しいテストデータベースでデータベースの移行を実行できるはずです。

php artisan migrate:refresh --database=mysql_test

2
jsonUK