【问题标题】:Database [] not configured Laravel 5数据库 [] 未配置 Laravel 5
【发布时间】:2016-09-29 15:56:16
【问题描述】:

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

【问题讨论】:

  • 做一个 composer dump autoload 和 artisan config:clear
  • 'prefix' => 'test_' 以及名为 lang 的表?我猜这可能会导致 eloquent builder 的冲突
  • 在深入挖掘之前,请确保文件config/database.php 存在...听起来很愚蠢,但是当我克隆一个作者没有提交config/database.php 的外部Laravel 项目时,它发生在我身上出于某种原因!
  • 我遇到了类似的问题,未配置数据库 [mysql]。如果我运行 php artisan cache:clear 或 config:cache 我会得到同样的错误。我通过进入 laravel/bootstrap/cache 并删除那里的 config.php 文件来解决它,然后再次运行上述命令。我相信这是一个文件权限错误,它阻止了缓存的 config.php 文件实际被清除。

标签: laravel laravel-5 laravel-5.1


【解决方案1】:

在我的例子中,我使用了 2 个 db 连接,而第二个添加的连接没有被缓存,命令调用: php artisan config:cache 成功了。

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

【讨论】:

  • 在我的情况下,我使用一个连接,然后切换到另一个数据库。我不太了解 Laravel,我已经从另一个人那里得到了代码。我试图登录系统,但它显示错误:“UTF-8 字符格式错误!”所以我试图修改数据库的字符集!感谢您的回答,现在它可以工作了!
【解决方案2】:

你使用的是单连接,所以你不需要指定它:

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

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

【讨论】:

  • 或者您可以使用$langs = DB::connection('mysql')->select('select * from lang');调用正确的数据库连接(称为“mysql”)
【解决方案3】:

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

php artisan config:cache 

【讨论】:

    【解决方案4】:

    任何遇到此问题的人 - 如果您使用的是 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】:

    在我的情况下,这是一个错误的数据库用户名。我在我的 config/database.php 以及 .env 文件中设置了它,其中一个与另一个不同。搜索时发现此线程,认为这可能对某人有所帮助。

    【讨论】:

      【解决方案6】:

      我有同样的问题,但是当我添加时

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

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

      【讨论】:

        【解决方案7】:

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

        [InvalidArgumentException]

        数据库 [] 未配置

        如果您确定您的连接参数良好,请尝试手动删除位于 app/bootstrap/cache 文件夹中的引导缓存配置文件。 希望它可以帮助某人。

        【讨论】:

          【解决方案8】:

          确定参数

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

          然后发出,

          php artisan optimize:clear
          

          【讨论】:

            【解决方案9】:

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


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

            【讨论】:

            • 谢谢你的回答,但你能解释一下它与问题中的问题有什么关系吗?
            猜你喜欢
            • 2016-05-08
            • 2017-05-04
            • 2020-09-05
            • 1970-01-01
            • 2016-01-09
            • 2017-05-30
            • 2015-08-17
            • 2015-10-11
            • 1970-01-01
            相关资源
            最近更新 更多