数据库[]未配置Laravel 5

Vik*_*tor 8 laravel laravel-5 laravel-5.1

我在phpmyadmin和新表中创建了新的数据库.

然后我做

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

得到

Database [compgen] not configured.
Run Code Online (Sandbox Code Playgroud)

在我的.env

DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=123
Run Code Online (Sandbox Code Playgroud)

在我的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,
    ],
Run Code Online (Sandbox Code Playgroud)

Art*_*man 10

就我而言,我使用了2个数据库连接,而第二个数据库连接未缓存,命令调用: php artisan config:cache 成功了。

要查看发生了什么,$connectionsDatabaseManager->configure方法中输出变量就足够了。


Sam*_*gah 6

对我来说,连接在开发中有效,但在生产环境中无效,所以经过大量搜索,我不得不重建配置缓存并且它已经起作用了。我在 Laravel 根目录中运行以下命令:

php artisan config:cache 
Run Code Online (Sandbox Code Playgroud)


Ale*_*nin 5

您正在使用单个连接,因此无需指定它:

$langs = DB::table('lang')->get();
Run Code Online (Sandbox Code Playgroud)

connection()仅当使用多个数据库连接时,才应使用method 。


jso*_*nUK 5

任何人在这方面绊倒 - 如果您使用 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,
    ],
Run Code Online (Sandbox Code Playgroud)

我创建了3级新env的变量DB_USERNAME_TESTDB_PASSWORD_TESTDB_DATABASE_TEST

.env用类似的东西编辑

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
Run Code Online (Sandbox Code Playgroud)

确保配置已刷新: php artisan config:cache

您应该能够在新的测试数据库上运行数据库迁移,如下所示:

php artisan migrate:refresh --database=mysql_test