執行python manage.py migrate 沒有創建表的解決方案

問題一:

我對我的models進行了一些修改,需要重新遷移數據
發現我在pycharm中執行python manage.py makemigrations 的時候沒有報錯,但是執行python manage.py migrate 的時候報錯

在這裏插入圖片描述

原因:
在這裏,Django會將我所有的操作,放在這個0001文件中,會記錄我曾經做過的操作。
也就是說,我刪除了數據庫中的表,但是這個文件中記錄我已經創建了表,那麼將不會創建表。
所以我在執行數據遷移的時候(python manage.py migrate) 他認爲沒有任何修改

標題在這裏插入圖片描述

解決方法:

將0001文件刪除,再一次執行
python manage.py makemigrations
python manage.py migrate

問題二:

python manage.py migrate 執行的時候依舊報錯,提示xxxx表已經存在,我們找到數據庫,清空關於django 的所有表的內容並刪除表,但是問題又來了,在刪除表的時候會提示
Cannot delete or update a parent row: a foreign key constraint fails
這是因爲表之間設置了外鍵,而MySQL是有外鍵約束的,所以刪除不掉這個表

解決方案:
解除外鍵約束,刪除表
在這裏插入圖片描述

最後都執行之後,記得將外鍵約束檢查添加上,保證MySQL的結構完整
在這裏插入圖片描述

這次,再次執行兩個命令,發現成功。

在這裏插入圖片描述

總結:

python manage.py makemigrations 表示通知Django即將做什麼,並做一個記錄,實際上並沒有做
python manage.py migrate 真正開始創建數據庫

導致錯誤的原因:我之前創建過models並且創建了對應的表,所以相關的表都是已經創建過的狀態,然後我對models進行了修改,而且是修改了表的關係和表的字段,所以出現的這個問題。

提示:

以後創建models應該提前想好再創建,否則容易出現問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章