關于django中makemigrations和migrate的錯誤終極解決方案
django的makemigrations和migrate建立資料庫映射,但如果您的項目存在已經有的表時會出現各種問題,有沒有一種方法能有效解決該問題呢,通過掉坑無數,終于摸索出一套終極解決方案
- 先删除項目migrations目錄中所有生成的000*.py檔案
- 確定您的資料庫中隻保留您需要的資料表,将前面由migrate生成的表全部删掉
- 使用makemigrations 生成migrations檔案
- 這一步非常重要,修改剛生成的migrations檔案,将您資料庫已存在的表的create指令行全部删除(如下)
migrations.CreateModel( name='xk_class2', .......
- 儲存後執行migrate,此時您資料庫中的表和您的migrations毫無關聯,就不會報錯了
- 再次使用makemigrations 生成migrations檔案,可能是0002*.py了
- 使用migrate --fake将新的migrations注冊,不會影響資料庫
- 至此,您的所有資料表已完成注冊,以後保持正常的修改、注冊即可。