2013-04-03 78 views
1

我爲我的django項目,開發和生產使用了兩個環境。主要是我正在開發dev,當我在我的模型中更改字段時,我正在使用south來遷移到新模型。多個數據庫上的django南部

我不明白的是我該如何將其轉移到我的生產數據庫?我正在做的是將我的代碼提交到SVN並更新生產,然後嘗試遷移。

我應該提交我的遷移目錄和文件嗎?或者我應該不?它似乎總是試圖遷移我的生產機器時失敗。編輯: 我已經完成了額外的測試。我已清理了我的southtroy表並刪除了任何遷移目錄。

現在我本地enviorment我運行:蟒蛇manage.py convert_to_south APP_NAME

一切似乎都很好地工作。我現在添加一個額外的字段到我的模型並運行:python manage.py schemamigration app_name --auto

新字段按預期遷移到我的數據庫中。現在,我將我的migrations文件夾提交到.py文件(包含我的新字段的0001-initial和0002)

我的開發環境我更新了包含遷移文件的樹。我運行python manage.py syncdb。 south_migrationhistory表已創建,但已登記

現在我運行python manage.py schemamigration app_name --auto並得到: 「似乎沒有任何改變。」

的south_migrationhistroy仍然是空的.....我不知道我在做什麼錯在這裏

+0

正確的方法是將所有遷移文件包含在svn中,對生產環境執行svn更新並運行遷移。你在做什麼?如果是這樣,請詳細說明什麼不準確。 – niconoe

+0

如果我這樣做,它只是說「沒有什麼可更新」 –

+0

您是否正在使用兩個完全分離的不同數據庫?通常南方應該檢測到最後一次遷移是什麼,並運行新的遷移(感謝south_migrationhistory表)...... – niconoe

回答

0

你應該提交遷移目錄和文件。當您執行svn更新時,南方現在知道如何處理新的遷移。

South查找一個名爲south_migrationhistory的數據庫表,查看已經應用了哪些遷移,並基於該表應用遷移文件夾中指定的新遷移。如果您沒有簽入新的遷移文件,它將始終以「沒有新更新」結束。

+0

如果我這樣做,它只是說「沒有什麼可更新的」,並且不做任何遷移。 –

+0

只需檢查您的'south_migrationhistory'表,並查看遷移是否已應用 – karthikr

+0

或者,您是否有防止寫入其中一個數據庫的路由器設置? – karthikr