更改配置后 Laravel DB 连接不刷新

这是我指定的数据库连接。


'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价值。但是,当我使用更新后的配置再次连接回同一个连接时,我没有得到我的数据库名称。连接未关联到任何数据库。


守着星空守着你
浏览 237回答 6
6回答

慕工程0101907

您可以尝试purge连接,以便断开连接并将其从数据库管理器的缓存中删除:...Config::set('database.connections.mysql_test.database', $db);DB::purge('mysql_test');dump(DB::connection('mysql_test')->getDatabaseName());

慕妹3242003

配置值更改后需要重新连接数据库DB::reconnect("mysql_test");

红糖糍粑

DB::Purge() 为我修复了它。看起来这是 Laravel 8.x 升级后需要的。在 Laravel 任务确实在需要时切换数据库连接之前。经过一些更新后,他们不再这样做了。

FFIVE

DB::setDefaultConnection($connectionName);为我解决了这个问题。(v8.48)不需要清除或刷新。

小唯快跑啊

我在 Laravel 5.7 上遇到了同样的问题就我而言DB::purge('mysql_test'),DB::reconnect("mysql_test")也没有用,所以我这样做了:$db_connection_name = 'mysql_test'; // Connection name that i wanted to connectConfig::set('database.default', $db_connection_name);

慕哥9229398

这应该更有效,因为它不必重新连接到数据库。DB::table("products")->get(); //tenant ADB::statement("use tenant_b");DB::table("products")->get(); //tenant B
打开App,查看更多内容
随时随地看视频慕课网APP