数据库[]未配置Laravel 5

时间:2016-09-29 15:56:16

标签: laravel laravel-5 laravel-5.1

我在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,
    ],

9 个答案:

答案 0 :(得分:5)

对我来说,该连接在开发中有效,但在生产环境中无效,因此,在进行大量搜索之后,我不得不重新构建配置缓存,并且该连接有效。我在laravel根目录中运行了以下命令:

[ENTETE]
CODE VEND = MONH
TYPE = COMMANDE
CL CDE = ABDCDEFG
CL INV = HIJIKL
DAT CDE = 03022020
EMAIL = abcd@.fr
NO CDE = 0000042268
DAT LIV = 03022020
TYP CDE = CDE SPECIALE
NBLIN = 3
CONTRM = ABDCDEFG
CL LIV = ABDCDTERK
[LIGNE]
REF FOU = REFVEN1
GENCOD = EAN11111111
QTE = 1
REF CLI = "XXXXXXXXXXX      "
[LIGNE]
REF FOU = REFVEN2
GENCOD = EAN2222222
QTE = 1
REF CLI = "YYYYYYYYYYYYYYY      "
[LIGNE]
REF FOU = REFVEN3
GENCOD = EAN333333
QTE = 1
REF CLI = "ZZZZZZZZZZZZZZZ      "
[FIN]

答案 1 :(得分:4)

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

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

只有在使用multiple DB connections时,才应使用connection()方法。

答案 2 :(得分:4)

在我的情况下,我使用了2个db连接,第二个添加了没有缓存,命令调用: php artisan config:cache 做了伎俩。

要查看正在发生的事情,只需在$connections方法中输出DatabaseManager->configure变量即可。

答案 3 :(得分:2)

在我的情况下,这是一个糟糕的数据库用户名。我把它设置在我的config / database.php以及.env文件中,其中一个与另一个不同。在搜索时找到这个帖子,认为这可能对某人有帮助。

答案 4 :(得分:1)

任何人都为此感到困惑-如果您使用的是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

答案 5 :(得分:1)

我为这个错误苦苦挣扎了几个小时,并找到了适合我的解决方案。如果无法使用php artisan config:cache删除缓存,因为它在运行后会引发错误:

[InvalidArgumentException]

未配置数据库[]

如果您确定连接参数正确,请尝试手动删除放置在app / bootstrap / cache文件夹中的引导程序缓存配置文件。 希望它能帮助某人。

答案 6 :(得分:1)

我遇到了同样的问题,但是当我添加时

'default' => env('DB_CONNECTION', 'mysql'),

到database.php,好像解决了问题

答案 7 :(得分:0)

确定参数

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=dbuser
DB_PASSWORD="password"

然后发出,

php artisan optimize:clear

答案 8 :(得分:0)

<块引用> <块引用>

如果在您使用验证时显示此错误,那么很简单:) 只需检查所有验证规则和消息是否已写入 > 正确


对我来说,我遇到了这个错误,我通过在验证规则中只用逗号替换点来解决它。