【问题标题】:South migration on a new DB新数据库上的南迁移
【发布时间】:2013-08-22 21:37:06
【问题描述】:

我知道问题所在,但这没有意义,因为我认为 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,因为没有文件。

【问题讨论】:

    标签: python django django-south


    【解决方案1】:

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

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

    希望我已经解释清楚了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-30
      • 2010-12-25
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多