回滚到先前的迁移时出错

时间:2016-05-02 01:12:01

标签: django django-migrations django-1.9

这是我目前的状态:

mainapp
 [X] 0001_initial
 [X] 0002_authorprofile_uuid
 [X] 0003_auto_20151107_1243
 [X] 0004_article_approved
 [X] 0005_auto_20151129_0950
 [X] 0006_article_category
 [X] 0007_auto_20160501_1601

我想回到0005.但是,当我运行/manage.py migrate mainapp 0005_auto_20151129_0950时,我收到错误ValueError: The database backend does not accept 0 as a value for AutoField.

这是我在models.py中修复的一个错误,所以我想回到0005并重新开始,然后重新进行迁移。

class Article(models.Model):
    category = models.ForeignKey(Category, default = 1) #trying to add this and set default value. It was first set to 0 but changed it to 1 after it failed

1 个答案:

答案 0 :(得分:0)

我的建议是打开你的sql控制台并转储django_migrations表。

DELETE FROM django_migrations WHERE app='mainapp'

然后确保已将迁移/文件夹中的所有文件都检入版本控制并删除它们!然后做

./manage.py makemigrations mainapp
./manage.py migrate mainapp --fake

如果--fake不起作用,那么是绝望的时间和--fake-initial,但是当你将应用程序部署到其他地方时,你很可能会再次经历这个过程: (