南迁移新数据库

时间:2013-08-22 21:37:07

标签: python django django-south

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

我有2个应用,barfoo,以下是模型。 在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,因为没有。

1 个答案:

答案 0 :(得分:1)

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

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

希望我已经解释得很好。