【问题标题】:django - "manage.py test" fails "table already exists"django - “manage.py test”失败“表已经存在”
【发布时间】:2011-06-20 10:08:51
【问题描述】:

我是 django 世界的新手。运行一些教程应用程序,并且在运行 python manage.py test 时我遇到了一个失败,说该表已经存在。我不确定发生了什么。我也在向南跑,迁移架构时没有错误。

非常感谢任何见解。

TIA 乔伊

【问题讨论】:

标签: python django


【解决方案1】:

这也发生在我的遗留代码上,但出于另一个原因。

我有两个模型,其中 db_table 引用同一个 db 表。 我知道这很愚蠢,但这不是我的错)

而且我从来没有在互联网上找到任何可以帮助我的东西。 详细程度设置为 3(manage.py test -v 3)保存了我 希望这对任何人都有帮助。

class Bla1(Model):
    some_column = ...
    class Meta:
        db_table = 'some_table'

class Bla2(Model):
    some_column = ...
    class Meta:
        db_table = 'some_table'

【讨论】:

  • 帮助,修复了跟踪哪些模型设置为在自定义 TestRunner 中管理,并在引用已引用表的任何模型中保留 managed=False。
【解决方案2】:

当鼻子
--cover-package=userdata,incorrectname
时也会发生这种情况 其中一个包的名称不正确

【讨论】:

    【解决方案3】:

    如果你用鼻子测试:

    DST_RUN_SOUTH_MIGRATIONS = 假

    【讨论】:

      【解决方案4】:

      这可能是您向南迁移的一个错误。您在真实数据库上看不到问题,因为迁移已执行(可能使用 --fake 选项)

      您可以尝试从 scracth 重新创建数据库,看看它是否有效。

      您还可以通过在 settings.py 中添加 SOUTH_TESTS_MIGRATE = False 来禁用 South 进行单元测试。使用此选项,将执行常规同步数据库来创建测试数据库。它还将加快测试过程。

      希望对你有帮助

      【讨论】:

      • 如果我必须从头开始绘制数据库,那么 South 有什么好处?
      • @Ahsan 数据库是从头开始创建的,仅用于测试,无论您是否使用 South,都会以这种方式发生。
      • ++ for SOUTH_TESTS_MIGRATE = False
      猜你喜欢
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多