天天看點

關于django中makemigrations和migrate的錯誤終極解決方案

關于django中makemigrations和migrate的錯誤終極解決方案

django的makemigrations和migrate建立資料庫映射,但如果您的項目存在已經有的表時會出現各種問題,有沒有一種方法能有效解決該問題呢,通過掉坑無數,終于摸索出一套終極解決方案

  1. 先删除項目migrations目錄中所有生成的000*.py檔案
  2. 確定您的資料庫中隻保留您需要的資料表,将前面由migrate生成的表全部删掉
  3. 使用makemigrations 生成migrations檔案
  4. 這一步非常重要,修改剛生成的migrations檔案,将您資料庫已存在的表的create指令行全部删除(如下)
    migrations.CreateModel(    name='xk_class2', .......
               
  5. 儲存後執行migrate,此時您資料庫中的表和您的migrations毫無關聯,就不會報錯了
  6. 再次使用makemigrations 生成migrations檔案,可能是0002*.py了
  7. 使用migrate --fake将新的migrations注冊,不會影響資料庫
  8. 至此,您的所有資料表已完成注冊,以後保持正常的修改、注冊即可。