在開發web的時候,如果是以前已存在的項目,項目下載下來後,為了使用測試庫的數據,會直接將整個測試庫(如sqlite3)拿到本機來。這種情況下,如果執行的順序不對,很容易在執行migrate的時候出現資料庫已存在的錯誤: django.db.utils.OperationalError: (1050 ...
在開發web的時候,如果是以前已存在的項目,項目下載下來後,為了使用測試庫的數據,會直接將整個測試庫(如sqlite3)拿到本機來。這種情況下,如果執行的順序不對,很容易在執行migrate的時候出現資料庫已存在的錯誤:
django.db.utils.OperationalError: (1050, "Table 'xxx' already exists")
要處理這種情況,如果是數據表都已經存在了,在migrate時直接使用 --fake-initial 來處理
python manage.py migrate --fake-initial
如果是因有外鍵存在,需要初始化多個表,且有部分數據表已創建,又有部分未創建,可以使用 --fake <appname>來處理
python manage.py migrate --fake <appname>