djiango makemigrations與migrate錯誤修正方法
阿新 • • 發佈:2018-12-10
1,場景描述:
model頻繁修改,導致表結構同步失敗,或者makemigrations檢查通過,但migrate執行失敗。
2,處理方法:
方法一(推薦,不能根本解決,但能支援快速開發):
1,只根據需要生成具體的模組。
python3 ./manage.py migrate appName;
2,商用環境的資料庫,通過navicate進行結構同步。商用環境不執行migrate命令,避免誤操作。
方法二(不能根本解決):
1,根據提示,推測最可能出現問題的app,找到響應的migrations檔案。
2,找到問題檔案,並根據內容修改錯誤部分,可將衝突語句刪除。
3,從新執行migrate
方法三(能根本解決):
1,找到問題模組,轉移所有migrations檔案(最近一個檔案除外)為sql文字:
asset應用下migrations資料夾下 0001_initial.py檔案轉換方法為:
python3 ./manage.py sqlmigrate asset 0001 #注意,沒有_initial.py字尾。
2,將所有生成的sql文字,找到新資料庫進行執行。
3,將新庫資料該應用表結構向老庫同步。
4,model類最近一次修改與資料庫表結構一致,執行migrate命令,成功應用最後一次檔案,此時model類與資料庫表結構一致問題解決。
如以上方法都不可以,刪除所有migrations檔案,備份資料,從新執行makemigrations與migrate,還原資料。