天天看点

关于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. 至此,您的所有数据表已完成注册,以后保持正常的修改、注册即可。