我知道这个问题,但这没有意义,因为我认为南方会处理这个问题。 我正在尝试安装一个新的STAGING服务器,所以一个新的数据库,但我收到了南迁移错误。
我有2个应用,bar
和foo
,以下是模型。
在0001_foo_initial
迁移中,我有一个依赖于Bar的Foo。但后来我删除了Bar
和依赖,因为我不需要它们。
#in foo.models
class Foo(models.Model)
#bar = models.ForeignKey(Bar...) #dependency removed in foo 2nd migration
foo_name..
"""bar.models - removed in bar 2nd migration
class Bar(models.Model)
bar_name...
"""
#bar
0001_bar_initial.py - had Bar model
0002_bar_model_Bar_deleted.py - removed Bar model
#foo
0001_foo_initial.py - foo with bar dependency
0002_foo_foreign_key_bar_deleted.py - remove dependency
所以当我运行migrate --all
并且我在0001_foo_initial.py
中获得关系时,因为它试图添加依赖关系。
它似乎首先运行bar
迁移,删除了Bar
。然后它会尝试运行0001_foo_initial
,但由于Bar
已被删除,因此会抛出错误。
如何修复此错误或错过了什么。我可以删除具有依赖关系的行[例如删除0001_foo_initial.py中的依赖项,但之后我将不得不为此进行房屋维护,例如我将不得不删除文件0002_foo_foreign_key_bar_deleted
,因为没有。
答案 0 :(得分:1)
不要在新数据库服务器上运行迁移。而是运行syncdb
并通过faked
进行现有迁移migrate --fake
。
syncdb
将在数据库中创建您当前的模型结构。伪造迁移对于说south
不需要应用迁移是必要的。
希望我已经解释得很好。