这是我指定的数据库连接。
'mysql_test' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database'=> '',
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
],
现在我尝试更改代码中的database
值,然后像这样连接到数据库
for( $i = 1; $i <=4 ; $i++)
{
$db='test_'.$i;
DB::connection('mysql_test')->statement('CREATE DATABASE '.$db.';' );
Config::set('database.connections.mysql_test.database' , $db);
error_log(config('database.connections.mysql_test.database'));
DB::reconnect('mysql_test');
error_log(DB::connection('mysql_test')->getDatabaseName());
}
config
值正在更改,因为在第一个error_log
上,我正在获取更改后的config
值。但当我使用更新后的配置再次连接回同一连接时,我没有获取数据库名称。连接没有与任何数据库关联。
6条答案
按热度按时间guykilcj1#
您可以尝试
purge
连接,以便断开连接并将其从数据库管理器上该高速缓存中删除:3pvhb19x2#
更改配置值后,需要重新连接数据库
DB::reconnect("mysql_test");
mwkjh3gx3#
DB::Purge()为我修复了它。看起来在Laravel 8.x升级后需要这个。在Laravel任务需要时切换数据库连接之前。在一些更新后,它们不再这样做了。
cunj1qz14#
我在Laravel 5.7上遇到了同样的问题
在我的情况下
DB::purge('mysql_test')
和DB::reconnect("mysql_test")
也不工作,所以我这样做:hwamh0ep5#
为我解决了问题。(v8.48)
不需要清除或刷新。
rdlzhqv96#
这应该更有效,因为它不必重新连接到数据库。