當我播種多個數據庫時,我遇到了問題。第一個數據庫種子工作正常。然而,播種第二個數據庫失敗了。Laravel 5 - 更改連接數據庫導致遷移錯誤(租戶數據庫)
對於第一個數據庫,我使用適當的設置創建名爲'tenant'的連接。像這樣...
$connections = Config::get('database.connections');
$tenant_connection = [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => $this->database,
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'port' => '3306'
];
$connections['tenant'] = $tenant_connection;
Config::set('database.connections', $connections);
var_dump(Config::get('database.connections')); //its in there!!
對於第二個數據庫中,我保持連接名稱相同,我在連接更改數據庫名稱...真正的簡單。
Laravel正在保存此連接。但是,它仍然使用原始數據庫。假設我使用名爲database_1的數據庫創建名爲「tenant」的連接,種子可以正常工作。然後我修改'tenant'與database_2的連接。種子在database_1上運行。
我看到Laravel不會重新配置現有的數據庫連接。因此添加
DB::reconnect('tenant');
似乎讓我使用的數據庫,但在遷移現在失敗,抱怨說,遷移表不存在,這對於一些原因,它不。
這裏是遷移命令,它測試(通常)正常工作:
Artisan::call('migrate', [
'--path' => "database/migrations_tenant",
'--database' => $this->dbc, //which is 'tenant'
]);
這就是我被困在使用相同的連接名稱修改數據庫。
如果我爲每個數據庫創建一個新的連接名稱,我可以成功運行遷移。不幸的是,當使用可變數據庫連接名稱時,在使用雄辯模型時會發現很多併發症。我確實有這個工作,正在修改默認連接,並保留了未初始化的雄辯連接變量,這不是一個好的解決方案。瞭解如何保持連接名稱相同將是首選。