2011-02-10 48 views
5

我遇到了同样的问题与:django - "manage.py test" fails "table already exists"南Django的表已经存在

的schemamigration /迁移工作的罚款(尽管确实有,需要我--fake一些问题,但所有的后续迁移以南工作)。但是,当我运行一个单元测试,我得到:

(1050, "Table '{tablename}' already exists") 

我只是好奇,我怎么能避开这个,为什么出现这种情况。在上面提到的问题中唯一的答案是南部可以从单元测试中排除,如果我这样做,这是否意味着我不能用南部管理的表单元测试?

说明大加赞赏:)

亚当

回答

8

不,这并不意味着。不要忘记,Django已经知道你的表应该是什么样子,如果你从头创建它们现在 - 它只是使用模型定义。 South是很有用的,因为它允许您在更改模型时轻松转换表结构,但在运行测试时不关心它:您只希望测试在当前版本的表上运行。

所以是的,在运行测试时通过SOUTH_TESTS_MIGRATE = False禁用South,并且Django会自动为您创建表。

+0

干杯另一个django概念(我从php移动)你已经清理了我的大脑中的大脑 – null 2011-02-10 14:29:40