今天在使用django时,不小心删除了数据库中的一张表,然后无论如何迁移都无法迁移出models中所规定的那张表。就算将migrations中的 0001_initial.py 迁移文件删掉再重新迁移,即使迁移成功了,也生成不了那张表。
解决方案:
1.找到数据库中的 django_migrations 表,没有的话在终端全部迁移一下就会自动生成:
python manage.py migrate
2.在该表中找到你所删除的表所对应的迁移记录,并删掉这条app迁移记录,并保存表。
3.重新迁移数据库,虽然会报错,但这部一定要有,忘了这一步可见第6步
manage.py migrate XXXapp
此时会提示:
django.db.utils.OperationalError: (1050, "XXX' already exists"),这里就成功一半了。
4.在迁移命令结尾添加 --fake,再试一下
python manage.py migrate XXXapp --fake
5.表重新生成了。
6.若还是不成功,如提示:
No migrations to apply.
可以试着把migrations中的迁移记录删掉,并重新迁移(makemigrations),再从头执行上述操作。