2009-12-10 161 views

回答

3

即使使用原始SQL,由於您需要每個表的查詢,因此無法在單步中遷移整個數據庫。但是,您可以爲所有應用創建遷移,然後一次全部運行它們。這是您接近一步遷移的最接近的東西。

+0

這就是問題所在。如果我不知道最終會有多少應用程序,這個過程如何實現自動化? – Pil 2009-12-10 08:17:29

+1

應用程序應該反映在數據庫中,反之亦然。所以如果你知道你的數據庫,你應該知道你的應用程序。 – googletorp 2009-12-10 09:09:39

4

如果你想創建遷移,manage.py startmigration已被棄用(見manage.py help startmigration),你應該使用manage.py schemamigration(如the docs描述的),你絕對應該在每個應用單獨做這個。

如果你想運行遷移(即對數據庫做,這是我猜的實際改變的話),該命令是manage.py migrate,如果不帶任何參數運行,將遷移所有的應用程序到最新的可用遷移。

我的部署腳本只有manage.py migrate,並且無需人工干預即可正常工作,無論有多少應用程序需要運行新的遷移。

+1

在內部,這不是幕後的單一步驟,多個遷移正在運行並且多個SQL語句正在執行。但是,只有一個命令只需輸入一次,所以從執行它的人的角度來看,這只是一個步驟。 – 2011-03-05 07:02:07