【问题标题】:How can I skip a migration with Django migrate command?如何使用 Django migrate 命令跳过迁移?
【发布时间】:2015-09-30 21:31:24
【问题描述】:

首先,我问的是 1.7 中引入的 Django 迁移,而不是south

假设我有迁移001_add_field_x002_add_field_y,并且它们都应用于数据库。现在我改变主意并决定恢复第二次迁移并用另一个迁移003_add_field_z 替换它。

也就是说,我想申请001和003,跳过002,怎么办?

附:我知道我可以向后迁移到 001,但是在我进行 003 迁移并执行 migrate 命令之后,001 到 003 都会被应用,对吧?

【问题讨论】:

    标签: python django django-models django-migrations


    【解决方案1】:

    您可以使用--fake 选项。

    一旦你恢复到0001,你就可以运行

    python manage.py migrate <app> 0002 --fake
    

    然后运行

    python manage.py migrate <app> #Optionally specify 0003 explicitly
    

    在这种情况下仅适用于0003

    如果您不想为所有环境/其他开发人员遵循此过程,您可以删除迁移文件,然后运行新的 makemigration,然后提交该文件 - 是的,请运行 migrate --fake 选项

    文档:https://docs.djangoproject.com/en/3.1/ref/django-admin/#cmdoption-migrate-fake

    【讨论】:

      【解决方案2】:

      不适用于此特定情况,但如果想要或需要跳过所有未应用的迁移,可以使用:

      python manage.py migrate --fake
      

      只是节省了一点打字时间。

      【讨论】:

        猜你喜欢
        • 2017-09-27
        • 2018-05-05
        • 2021-02-09
        • 2012-08-13
        • 2017-06-01
        • 2020-06-20
        • 2021-02-07
        • 2020-11-07
        • 2022-11-25
        相关资源
        最近更新 更多