将南迁移标记为新的

时间:2012-07-11 16:58:04

标签: django migration django-south

我意外地使用--fake选项为应用程序运行伪造的南迁移,但数据库缺少最后一次更改。

我伪造了三次迁移,但数据库状态仍为0002.如果列出迁移,则所有迁移都标记为run。

$ ./manage.py migrate cmsplugin_mailchimp --list

 cmsplugin_mailchimp
  (*) 0001_initial
  (*) 0002_thankyou_field
  (*) 0003_redirect_url

有没有办法将最新的迁移标记为新的,以便在我运行./manage.py migrate cmsplugin_mailchimp时处理它?<​​/ p>

1 个答案:

答案 0 :(得分:3)

没有额外的选项可以“将迁移标记为新”,但是有一个不同的,非常明显的解决方案:只需进行向后迁移。

$ ./manage.py migrate cmsplugin_mailchimp 0002 --fake

 - Soft matched migration 0002 to 0002_thankyou_field.
Running migrations for cmsplugin_mailchimp:
 - Migrating backwards to just after 0002_thankyou_field.
 < cmsplugin_mailchimp:0003_redirect_url
   (faked)

$ ./manage.py migrate cmsplugin_mailchimp --list

 cmsplugin_mailchimp
  (*) 0001_initial
  (*) 0002_thankyou_field
  ( ) 0003_redirect_url

现在South的状态与数据库的状态匹配,您实际上可以运行上一次迁移::

$ ./manage.py migrate cmsplugin_mailchimp

Running migrations for cmsplugin_mailchimp:
 - Migrating forwards to 0003_redirect_url.
 > cmsplugin_mailchimp:0003_redirect_url
 - Loading initial data for cmsplugin_mailchimp.
Installed 0 object(s) from 0 fixture(s)