2017-07-25 143 views
2

我正在用Django 1.8和PostgreSQL 9.4建立一個電子商務網站。我有興趣瞭解在更改數據庫時可以使用哪些技術,以避免Django遷移出現問題,特別是在無法遷移運行的情況下,我必須刪除遷移,重建數據庫以及從備份中恢復。避免Django遷移問題的技巧?

在發展中,我發現,當我改變我的數據庫架構和重新運行遷移,他們只運行的時間成功地約50%。很明顯,我做錯了一些事情。更糟糕的是,當遷移不起作用時,並不總是很容易明白爲什麼他們失敗了,以及如何修改我的遷移文件以便它們能夠運行。在這些情況下,我總是必須刪除數據庫並重新開始。這在開發中是可以接受的,但是當我投入生產時這不是一個好策略。

什麼是一些「最佳做法」或「該做什麼和不該做什麼」你當你修改模型類/數據庫模式,以增加你的Django遷移將運行的概率遵循?是否有任何步驟可以確保您可以在您的遷移無法運行並且必須從頭重建數據庫的情況下恢復數據庫?我應該補充一點,我是一個人的創業公司,所以我沒有使用相同代碼庫開展工作的團隊會遇到的衝突問題。

+1

你應該張貼一些什麼錯誤,你有移民得到的例子。 –

+0

這是一個好主意,我會,但不幸的是,我沒有記錄他們,我重建我的數據庫之前。 – William

+0

它太寬泛了,就像你可以做假遷移一樣,你可以自己編輯遷移文件來解決錯誤。然後你可以有空的字段來避免默認值錯誤。然後另一個選擇是備份dB然後遷移然後重新加載dB。 @William還有一個想法是,我不同意下面的答案,我認爲這是一個可怕的想法 –

回答

0

這些技術是什麼,我用我在它正在工作的服務器相同的環境中本地

  1. 工作。 Django和數據庫服務器的相同版本然後推送遷移本身,不要忽略它,並使用遷移在服務器上進行遷移。
  2. 這一次我用了一次,我手動遷移,我使用SQL命令手動創建的表,索引,關係,妥善過它的工作。

我喜歡第一個更

+0

第一個會混亂您的生產服務器的遷移和dB狀態。任何我不明白的第一個。如何,如果你從本地遷移 –

+0

在服務器上創建一個當您使用任何VC喜歡的git這將是不同的,不要忽略你的遷移文件,將其完全推,並利用它們的服務器上遷移也一樣,一些開發商忽略它們根據我的觀點再次是效率不高,使服務器上遷移,因爲它不同了很多,降低了遷移錯誤 –

+0

好吧,如果你創建本地遷移和使用它們的服務器和第二種情況,所以你創建的服務器遷移,然後不會都是一樣的。如果你有一個團隊在同一個項目上工作,這個解決方案也會很糟糕。 –