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