- 背景:**
- 到目前为止,我有DB1和DB2,还有一个使用DB1的laravel应用程序
- 现在我希望laravel(8)应用程序使用DB2(DB1和2都是mysql)
- 我编辑了. env文件以更改DB_HOST并清除了配置缓存
- 预期**:使用DB2的Laravel
- 问题**:Laravel仍连接到DB1
"我尝试过的事"
php artisan config:cache
/透明php artisan optimize:clear
- 重新启动的DB1/DB2
- 重新启动的nginx
- 重新启动的php-fpm
- 重新部署了整个应用程序(使用composer安装等)
- 尝试在
config/database.php
中添加新连接而不是编辑现有连接:同一问题 - 硬编码
config/database.php
中的值,而不是引用env文件:同一问题 php artisan db sql
--〉连接到正确的数据库(这就是让我发疯的原因)- ......但是php artisan tinker似乎没有。我只在DB2中创建了一个虚拟表(所以在DB1中不存在),并且通过tinker使用
\DB::connection('mysql')->table('dummy')->get();
获取该表时显示了一个错误 - 显然,停止DB1会使应用程序离线("No such file or directory",即没有数据库PDO)
我都不知道该尝试什么了,网上的每一个帖子都是在一个简单的artisan config:clear/cache
之后解决的。
有什么想法吗?
3条答案
按热度按时间6pp0gazn1#
答案是我的.env文件中的
DB_SOCKET=/tmp/mysql.sock
,它锁定了与以前(本地)DB的连接。amrnrhlw2#
如果其他答案不能解决这个问题,你可以尝试手动删除
./bootstrap/cache/config.php
和./bootstrap/cache/_config.php
中该高速缓存。在我的例子中,由于某种原因,php artisan config:cache
似乎没有清除缓存。这是在旧版本的Laravel上(确切地说是5.2.45)。but5z9lq3#
要更改数据库,您需要将数据库名称写入DB_DATABASE,而不是DB_HOST...