2011-02-10 51 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