1. 程式人生 > >djiango makemigrations與migrate錯誤修正方法

djiango makemigrations與migrate錯誤修正方法

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,還原資料。