我在當前正在進行的項目中出現了奇怪的行為。雖然我的所有遷移都可以通過命令行正常工作,但php artisan migrate它們并不通過 Artisan 命令運行。目標是旋轉一個新的數據庫并在那里運行遷移,因此我該部分的代碼如下所示: \DB::statement("CREATE DATABASE TESTDB");\DB::disconnect('mysql');\Config::set('database.connections.mysql.database', 'TESTDB');\DB::connection('mysql')->reconnect();\Artisan::call('migrate', [ '--database' => 'mysql', '--path' => 'database/migrations' ]);數據庫已成功創建,因此沒有問題,并且遷移開始運行,但在與重命名列(聲稱該列不存在)有關的遷移中總是失敗。錯誤信息“表上沒有名稱為“parent_version_id”的列但該專欄仍然存在,只是沒有重命名。重命名遷移線: $table->renameColumn('parent_version_id', 'child_version_id');如果我刪除此行,遷移將運行(當然不會重命名它將僅通過的列),并且在下一次重命名遷移中將失敗。請記住,如果我手動更改環境文件中的數據庫并運行遷移,它們將運行順利,沒有任何問題,但我希望動態創建和設置它,這就是我動態切換數據庫的原因。
1 回答

開滿天機
TA貢獻1786條經驗 獲得超13個贊
顯然,修復是替換 1 行代碼。
代替 :
\DB::connection('mysql')->reconnect();
用過的:
\DB::purge('mysql');
這似乎也刪除了與學說相沖突的舊緩存。
- 1 回答
- 0 關注
- 152 瀏覽
添加回答
舉報
0/150
提交
取消