python - 新数据库上的南迁移

标签 python django django-south

我知道这个问题,但这没有意义,因为我认为 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 中的依赖项] 但随后我将不得不为此进行 lotta 房屋维护,例如我将不得不删除文件 0002_foo_foreign_key_bar_deleted,因为没有文件。

最佳答案

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

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

希望我已经解释清楚了。

关于python - 新数据库上的南迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391255/

相关文章:

python - Numpy 的 'linalg.solve' 和 'linalg.lstsq' 没有给出与 Matlab 的 '\' 或 mldivide 相同的答案

python - 如何有效地在 REST 序列化程序中找到相关字段的数据库?

python - 如何使用 `xarray.DataArray` 索引器更新 `.sel()`?

python - 工厂男孩 - 如何创建工厂所需的数据(预生成 Hook )

django - 如何通过 docker-compose 给 Postgres 用户 super 用户权限?

django - 如何在南迁中访问 auth User 的 User.objects.create_user(...) ?

django - 您如何卡住未卡住的模型以便您可以继续使用 South?

python - Django South 忽略我的自定义规则

python - 向空的二维 NumPy 数组添加行

python - 将列表的元素添加到字典中的固定位置