【问题标题】:How to redo makemigrations after getting an error?出现错误后如何重做迁移?
【发布时间】:2016-08-26 13:35:33
【问题描述】:

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

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

现在,当我运行 makemigrations 重新开始时,它可以工作了。然后migrate 实际上并没有做任何事情,只是再次显示错误。所以那里有一个迁移是不好的,然后有一个是正确的。

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

我有什么想法可以回到我开始的地方,并在从 models.py 中删除错误的情况下重试 makemigrations 吗?

【问题讨论】:

    标签: django django-migrations django-1.9


    【解决方案1】:

    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 并再次迁移。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2011-10-18
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多