Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据库[]未配置Laravel 5_Laravel_Laravel 5_Laravel 5.1 - Fatal编程技术网

数据库[]未配置Laravel 5

数据库[]未配置Laravel 5,laravel,laravel-5,laravel-5.1,Laravel,Laravel 5,Laravel 5.1,我在phpmyadmin和新表中创建了新的db 那我会的 public function next(Request $request){ $langs = DB::connection('mydb')->select('select * from lang'); } 得到 Database [compgen] not configured. 在我的环境中 DB_HOST=localhost DB_DATABASE=test DB_USERNAME=root DB

我在phpmyadmin和新表中创建了新的db

那我会的

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

Database [compgen] not configured.
在我的环境中

DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=123
在my 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,
    ],

您使用的是单一连接,因此无需指定:

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

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

在我的示例中,我使用了2 db连接,第二个添加的连接未缓存,命令调用:

php artisan配置:缓存
成功了


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

在我的例子中,这是一个错误的数据库用户名。我在config/database.php和.env文件中设置了它,其中一个不同于另一个。搜索时发现此线程,认为这可能有帮助。

任何遇到此问题的人-如果您使用的是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\u USERNAME\u TEST
DB\u PASSWORD\u TEST
DB\u DATABASE\u 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\u test

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

php artisan config:cache 

我与这个错误斗争了几个小时,找到了适合我的解决方案。如果无法使用
php-artisan-config:cache
删除缓存,因为它在运行后会抛出错误:

[无效辩论例外]

数据库[]未配置

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

确保参数正确

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=dbuser
DB_PASSWORD="password"
然后发布,

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



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

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

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

到database.php.It似乎已经解决了这个问题

是否执行编写器转储自动加载和artisan配置:清除
'prefix'=>'test'
以及名为
lang
的表?这可能会给雄辩的构建器带来冲突我猜在深入挖掘之前,请确保文件
config/database.php
存在。。。听起来很愚蠢,但当我克隆了一个外部Laravel项目时,我就遇到了这种情况,因为某种原因,作者没有提交
config/database.php
!我有一个类似的问题,数据库[mysql]没有配置。如果我运行php-artisan-cache:clear或config:cache,我会得到相同的错误。通过进入laravel/bootstrap/cache并删除其中的config.php文件,然后再次运行上述命令,我解决了这个问题。我认为是文件权限错误导致缓存的config.php文件无法被实际清除。或者您可以使用
$langs=DB::connection('mysql')->select('select*from lang')调用正确的数据库连接(称为“mysql”)此配置出现错误。。。可能的原因是什么?在我的情况下,我使用一个连接,然后切换到另一个DB。我对拉威尔了解不多,我已经从另一个人那里得到了密码。我试图登录系统,它向我显示错误:“格式错误的UTF-8字符!”因此我试图修改数据库的字符集!!多亏了你的回答,现在它工作了!谢谢你的回答,但是你能解释一下它与问题中的问题有什么关系吗?