Django项目中执行migrate迁移脚本时报错及解决方法

一、python manage.py startapp  appname  创建一个app

二、python manage.py make migration  将模型生成迁移脚本

    1.模型所在的app,必须在settings的INSTALLED_APPS下,否则报错。

    2.python manage.py make migration appname   只将某个app模型生成迁移脚本

    3.python manage.py make migration appname  --name "add_order_price"   只将某个app模型生成迁移脚本时指定名字,比如''在         订单中增加价格''字段。

三、python manage.py migrate 将新生成的迁移脚本映射到数据(django_migration),创建新的表或者修改表的结构。

    1.python manage.py migrate appname 指定只映射某个app

    2.python manage.py migrate appname  迁移版本    指定只映射某个app下某个迁移版本

报错原因:数据库中django_migration中记录的迁移版本记录与Django项目中app下执行 makemigrations命令时生成的迁移脚本版本不一致造成的。

解决办法:

方法一、使用--fake参数:对比数据库和项目中迁移脚本,找到二者不同的脚本,然后执行 python manage.py migrate appname --fake将代码中的迁移脚本映射到django_migration中,但并不会执行SQL语句。这样就可以避免每次执行migrate时,都执行一些重复脚本。

方法二、--fake-inital参数:

  1. 首先保证app下模型字段与数据库中与模型对应的表的字段一致
  2. 删除项目中某个app下migration文件中所有的迁移文件(init文件除外)
  3. 删掉数据库中django_migration中所有和app有关的迁移脚本文件
  4. 执行python manage.py make migration appname在项目中生成第一个迁移脚本
  5. python manage.py migrate appname  --fake-inital  

     通过以上这些步骤就即可解决问题。

 

你可能感兴趣的:(Django)