如何使用 Django migrate 命令跳过迁移?
Posted
技术标签:
【中文标题】如何使用 Django migrate 命令跳过迁移?【英文标题】:How can I skip a migration with Django migrate command? 【发布时间】:2015-09-30 21:31:24 【问题描述】:首先,我问的是 1.7 中引入的 Django 迁移,而不是south
。
假设我有迁移001_add_field_x
、002_add_field_y
,并且它们都应用于数据库。现在我改变主意并决定恢复第二次迁移并用另一个迁移003_add_field_z
替换它。
也就是说,我想申请001和003,跳过002,怎么办?
附:我知道我可以向后迁移到 001,但是在我进行 003 迁移并执行 migrate 命令之后,001 到 003 都会被应用,对吧?
【问题讨论】:
【参考方案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
只是节省了一点打字时间。
【讨论】:
以上是关于如何使用 Django migrate 命令跳过迁移?的主要内容,如果未能解决你的问题,请参考以下文章