有时候一些操作失误,导致app的Migrations出现错误,重新建表是最快的解决方式。
我项目里的review出现了问题,我们看看现在的情况:
shell# python manage.py showmigrations ...... review [X] 0001_initial [X] 0001_auto_20190801_1457 [X] 0003_auto_20190809_1241 [X] 0004_auto_20190809_1243 [] 0005_auto_20190809_1641 [] 0006_auto_20190809_1700 [] 0007_auto_20191119_0900 ......
错误就是从上面0005_auto_20190809_1641那个地方开始的,于是我决定删表重建。
1.首先,移除Migrations的提交记录,
shell# python manage.py migrate --fake review zero shell# python manage.py showmigrations ...... review [] 0001_initial [] 0001_auto_20190801_1457 [] 0003_auto_20190809_1241 [] 0004_auto_20190809_1243 [] 0005_auto_20190809_1641 [] 0006_auto_20190809_1700 [] 0007_auto_20191119_0900 ......
可以看到,已经全部去掉了,然后删除review/migrations目录下的所有文件。
2.然后,删除表,重建app的表即可。
mysql shell> drop table review;
shell# python manage.py makemigrations review shell# python manage.py sqlmigrate review 0001 shell# python manage.py migrate review
如果不想删除表,那么上面的步骤2改成以下操作即可:
python manage.py makemigrations review python manage.py migrate --fake-initial review