南 - 如何强制某些迁移?

egi*_*dra 21 python django django-south

我有一个创建新表的迁移003,但由于某种原因,South在执行迁移后没有创建新表:我正在执行以下命令:

[kelp@web187 goals]$ python2.7 manage.py migrate main 0003_auto__add_nudge
Running migrations for main:
 - Migrating backwards to just after 0003_auto__add_nudge.
 < main:0006_auto__add_field_nudge_status
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

django.db.utils.DatabaseError: relation "main_nudge" does not exist
Run Code Online (Sandbox Code Playgroud)

它不存在,因为迁移003应该创建它.为什么我会收到此错误?

jpi*_*pic 66

看起来你假装向前移动0006,你也应该向后伪造它:

manage.py migrate --fake yourapp 0005
Run Code Online (Sandbox Code Playgroud)

这会将当前迁移设置为0005.

显然,您想要迁移回0002:

manage.py migrate --fake yourapp 0002
Run Code Online (Sandbox Code Playgroud)

然后从0003开始:

manage.py migrate yourapp
Run Code Online (Sandbox Code Playgroud)

  • 注意'zero'关键字也适用于此处.如果删除一个表并希望South重新创建它,你可以`manage.py migrate --fake yourapp zero`然后`manage.py migrate yourapp` (20认同)
  • @IMFletcher 感谢您提供有关“零”迁移的提示。请注意,它也适用于 Django 1.7 迁移。 (2认同)