出错后如何重做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) 运行 进行迁移并再次迁移。
所以首先我 运行 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) 运行 进行迁移并再次迁移。