6

我在让我的 django 测试正常运行时遇到了一些困难;我正在使用鼻子,并且在应用迁移时开始出现错误,从表 1 到表 2 的外键关系因错误而失败:

django.db.utils.DatabaseError: relation "table2_column" does not exist

查看迁移的应用方式,我很清楚 table1 不是在应用外键关系之前创建的,所以我试图弄清楚如何强制依赖,并找到了以下文章: http:// south.aeracode.org/docs/dependencies.html

然后我补充说:

depends_on = (
    ("app2", "0001_inital"),
)

到我的 app1/0001_initial.py 文件。

不幸的是,现在我收到以下错误:

south.exceptions.DependsOnUnknownMigrationMigration 'app1:0001_initial' depends on unknown migration 'app2:0001_inital'.

关于如何解决这个问题的任何想法?

4

3 回答 3

19

我不确定这是否能解决您的问题,但您可以添加一个设置以在运行测试时使用 syncdb 而不是迁移。将以下行添加到您的 settings.py

SOUTH_TESTS_MIGRATE = False
于 2011-03-23T11:52:44.543 回答
5

您所依赖的迁移名称中有错字。它应该是:

depends_on = (
    ("app2", "0001_initial"),
)

在遇到您在此处列出的完全相同的问题之后,该依赖系统对我有用,然后找到了依赖系统 South 的文档。

于 2011-04-23T10:06:25.767 回答
0

如果在导入目标模块期间出现错误,也会引发此错误:如果您有手动构建的迁移,并且您确定文件名与您的depends_onneeded_by匹配,请检查引用的文件是否有错误。

此外,将 SOUTH_TESTS_MIGRATE 设置为 False 也无法解决问题。这只是意味着您在尝试使用迁移之前不会看到问题。

http://south.readthedocs.org/en/latest/settings.html

(That's still useful if you want to speed up your unittests.)

于 2014-07-11T22:13:46.780 回答