2

我知道这个问题,但这没有意义,因为我认为 South 会处理这个问题。我正在尝试安装一个新的 STAGING 服务器,所以是一个新的数据库,但我遇到了南迁移错误。

我有 2 个应用程序,barfoo, 以下是模型。0001_foo_initial在迁移中,我有一个 Foo 依赖于 Bar 。但是后来我删除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,因为没有文件。

4

1 回答 1

1

不要在新的数据库服务器上运行迁移。而是通过运行syncdb并进行现有迁移。fakedmigrate --fake

syncdb将在数据库中创建您当前的模型结构。伪造迁移对于说south不需要应用迁移是必要的。

希望我已经解释得很好。

于 2013-08-22T21:45:19.127 回答