回滚到以前的迁移时出错

Errors when rolling back to previous migration

这是我目前的状态:

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

我的建议是打开您的 sql 控制台并转储 django_migrations table.

DELETE FROM django_migrations WHERE app='mainapp'

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

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

如果 --fake 不起作用,是时候采取绝望的措施了 --fake-initial 但是当您将应用程序部署到其他地方时,很可能您将不得不经历所有这些过程再次:(