出错后如何重做makemigrations?

How to redo makemigrations after getting an error?

所以首先我 运行 makemigrations 然后我 运行 migrate 得到了错误 ValueError: The database backend does not accept 0 as a value for AutoField.

所以我继续修改我的 models.py 以修复该错误。

现在,当我 运行 makemigrations 重新开始时,它起作用了。然后 migrate 实际上什么也没做,只是再次显示错误。所以有一个迁移是坏的,然后是一个正确的迁移。

所以我在 Stack Overflow 上阅读后尝试 运行ning ./manage.py migrate --fake mainapp zero,现在它说 django.db.utils.OperationalError: (1050, "Table 'mainapp_article' already exists")

有什么想法可以让我回到开始的地方,并立即重试 makemigrations 并从 models.py 中删除错误?

如果你有错误的迁移,你应该简单地删除它并重新生成它。

1) 确定您上次成功的迁移:

./manage.py showmigrations mainapp
[X] 0001_initial
[X] 0002_auto_20160425_0102
[X] 0003_auto_20160426_2022
[X] 0004_auto_20160427_0036

2) 然后使用 migrate 将您的数据库迁移到指定的迁移点。

 ./manage.py migrate mainapp 0003_auto_20160426_2022

在此示例中,我假设 0003 迁移成功,而 0004 未成功。

3) 删除迁移文件

rm mainapp/migrations/0004_auto_20160427_0036.py*

4) 运行 进行迁移并再次迁移。