2011-03-16 53 views

回答

2

this exchange佔地面積我很質疑:

如果你手動修改數據庫,南都不會注意到 - 的 跟蹤的是哪個版本的數據庫是 south_migrationhistory表的唯一途徑,所以如果你背後搗鼓它,你的責任是修理它的 。

我最終什麼事做了評論指出,我有問題下降,做一個schemamigration模型,創建一個我放棄了(所以南有東西砸),migrate ING的空沒有列的表格,然後取消註釋該模型,schemamigrationmigrate再次。有點煩人,不僅僅是丟下桌子,而且還好啊。

+0

是否有可能在mysql中創建無列表? – 2013-10-17 09:45:00

27

有相同的問題。不知道這部作品在任何情況下,但這裏是我所做的:

  1. 評論了「南方」從INSTALLED_APPS
  2. 運行manage.py執行syncdb
  3. 取消註釋「南下」在INSTALLED_APPS
  4. 運行管理。 py migrate

Voila!

您的里程可能會有所不同....

+0

您在執行此操作時也需要重命名migrations文件夾,我只是以下劃線作爲前綴。在步驟1和2之間執行此操作,然後在步驟4之前重命名爲'遷移' – 2015-02-26 15:26:21

39

這是一個相當晚迴應,但對於誰都會碰到同樣的問題(像我一樣)的人。

通常下降由南管理應用程式的db_tables你應該使用:

python manage.py migrate appname zero 

但是,如果你在DB手動降到他們讓南知道它

python manage.py migrate appname zero --fake 

而且當然要重新創建表格

python manage.py migrate appname 
+4

對於'migrate appname zero'! – 2012-12-18 10:33:35

+11

只有當你丟掉_every_表 – 2013-01-16 21:51:37

+0

+1時,這纔有效幫助我在我的開發服務器上工作。謝謝! – tatlar 2013-05-30 16:14:32

1

確保已應用所有遷移: python manage.py migrate

告訴Django創建表,因爲他們是在你的模型:python manage.py syncdb

告訴南一切是它應該是:python manage.py migrate appname --fake

這假設沒有在的任何改變你的自創建上次遷移以來,型號爲

0

我知道這個問題已經過時,但我只是遇到了這個問題,並認爲我會發布我的解決方案,以防萬一這有助於任何人。

  1. 進入您的models.py數據庫所在的文件夾。
  2. 將整個班級從models.py文件中刪除。
  3. 運行./manage.py schemamigration appname --auto(這將創建另一個遷移,其中South將識別刪除此表)。您可能需要在數據庫中重新創建一張空白表格,以便South可以看到它。
  4. 運行migration,表應該從數據庫中刪除。
  5. 將表格類重新粘貼回models.py文件中的位置。
  6. 運行./manage.py架構遷移appname --auto。南應該拿起桌子,並允許你遷移
  7. 運行./manage.py遷移appname和南應重新添加到您的數據庫表...與列等等,但沒有數據,明顯。 :)
+0

哈哈很好,這正是我的答案所說的,但一步一步的佈局。 – Claudiu 2013-11-23 05:40:57

+0

噢,真好!對不起,我沒有看到你回答。很高興我們都至少達到了同樣的決議。 :) – jaredgilmore 2013-11-25 18:16:59