使用 --fake 后如何在 django 1.8 上重做迁移
Posted
技术标签:
【中文标题】使用 --fake 后如何在 django 1.8 上重做迁移【英文标题】:How to redo a migration on django 1.8 after using --fake 【发布时间】:2015-08-18 01:32:06 【问题描述】:我的迁移出了点问题,我向模型添加了一个新的日期时间字段,然后我使用了 makemigrations 并进行了迁移。
python manage.py makemigrations
python manage.py migrate
但在此之后,迁移出现“表已存在错误”。我想我可以伪造迁移并重新开始,所以我做到了
python manage.py makemigrations --fake core
Operations to perform:
Apply all migrations: core
Running migrations:
Rendering model states... DONE
Applying core.0001_initial... FAKED
Applying core.0002_auto_20150525_1331... FAKED
Applying core.0003_auto_20150525_1348... FAKED
Applying core.0004_processo_data_atualizacao... FAKED
但是我刚刚创建的新迁移也是伪造的(当然!)。
执行此操作后重做迁移(在本例中为 core.0004)的正确方法是什么?
【问题讨论】:
在南方,可以通过您想要迁移到的特定步骤。然后它将向前或向后迁移,直到给定步骤之后。当他们将其合并到 Django 中时,该功能是否被删除? @spectras 不,不是,完全一样 【参考方案1】:您应该首先使用 --fake
将当前状态设置为 0003(假设 0003 是您真正应用的最后一个迁移):
python manage.py migrate --fake core 0003
然后照常进行:
python manage.py migrate core
相关文档:https://docs.djangoproject.com/en/dev/ref/django-admin/#migrate
【讨论】:
如果这是我第一次使用 --fake 的迁移呢? @EvyatarSivan 你应该使用zero
而不是迁移号码,例如python manage.py migrate --fake core zero
另见--fake-initial
标志docs.djangoproject.com/en/1.8/topics/migrations/…。
仅供参考如果您使用zero
而不是迁移编号,您将丢失该表中的所有数据
请注意core
是应用程序的名称以上是关于使用 --fake 后如何在 django 1.8 上重做迁移的主要内容,如果未能解决你的问题,请参考以下文章
--fake-initial vs --fake 在 Django 迁移中?