数据库[]未配置Laravel 5
我在phpmyadmin和新表中创建了新的db 那我会的数据库[]未配置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
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字符!”因此我试图修改数据库的字符集!!多亏了你的回答,现在它工作了!谢谢你的回答,但是你能解释一下它与问题中的问题有什么关系吗?