我正在一个新的开发环境上部署一个项目。
当我使用南方的时候,我做到了:
$ python manage.py syncdb --all
$ python manage.py migrate --fake我使用syncdb --all来应用模型的实际状态。
然后migrate --fake将所有模型标记为迁移的模型。
但在那之后,我的模型不在最后一个版本(缺失字段)上。
我做错什么了?
我想我所有的修改都是迁移的。
如果我做了
$ python manage.py syncdb它似乎创建了自我使用South (这是预期的)以来的第一个状态。
但是后来
$ python manage.py migrate有些表显示为已创建的表。
发布于 2013-12-28 10:28:52
实际上,对我的案子来说应该没问题
$ python manage.py syncdb --all
$ python manage.py migrate --fake最近我不得不重新部署我的应用程序,我也面临着同样的问题。
我刚刚意识到,在导致这个问题的模型上,我进行了双初始迁移。
0001_initial.py
0002_initial.py
0003_auto__add_field_mytable_myfield.py我只是删除并重命名了
0001_initial.py
0002_auto__add_field_mytable_myfield.py然后重新部署整个数据库(显然不要忘记更新我的其他主机上已经应用的迁移)
发布于 2013-06-15 12:23:13
--fake选项在尝试创建新迁移时不会避免错误。它记录迁移应用了而不实际应用它们。。
此外,您还需要--ignore-ghost-migrations或--delete-ghost-migrations来实现您想要的目标。
要将现有项目转换为south,首先需要使用转换应用程序
现在,如果您已经运行了--fake,要恢复,可以这样做:
./manage.py dbshell如果您想删除特定应用程序的迁移,
DELETE FROM south_migrationhistory WHERE app_name = 'blah'https://stackoverflow.com/questions/17121737
复制相似问题