2012-02-15 31 views
4

我剛剛開始使用Django Heroku,它似乎很棒。但是,當我更改現有模型時,我不確定如何將這些更改運行到Heroku環境。當添加所有新的數據庫表時,syncdb工作得很好,但我該如何修改現有的表?PostgreSQL在共享數據庫的Heroku和Django組合中的變化

我發現Heroku只提供psql訪問權限給一個專用的數據庫,所以這是不可能的。我沒有嘗試南方,但它似乎是一個解決方案。

所以我想我問如何使用Django和Heroku進行數據庫更改?

回答

3

你所要求的是所謂「架構遷移」,甚至「schema evolution」。 Django有一些documentation about it on the wiki

Django的syncdb command不支持。作爲事實上,在​​:

創建在INSTALLED_APPS其 表尚未被創建

相反,Django的提出利用drop the tables manually,然後所有的應用程序的數據庫表再次運行執行syncdb在documentation of the deprecated reset command

您還可以使用ALTER TABLE或手動刪除TABLE語句。

不要害怕,有許多可重複使用的應用程序,以幫助您正確的架構遷移,希望你可以選擇最適合你的。請不要在我的回答中詳細說明,請讓我鏈接我寫的有關Django schema migration的文章,它比較了所有當前的解決方案。

+0

是的,Django的syncdb只能幫助你達到某個特定的點。但納什維加斯看起來很有希望!我喜歡將SQL和Python都用於製作遷移腳本的想法。讓我們只希望它能與Heroku一起工作,因爲它可能應該。作爲答案已經足夠了,謝謝@jpic! – Janne 2012-02-15 13:24:50

+0

@Janne您可能還想使用'python mange.py inspectdb> models.py'手動更改模型。只要確保你不在'models.py'目錄中,否則它將被覆蓋。 – Edwin 2012-02-29 23:51:41

+0

我忘記了所有關於inspectdb的信息。在某些情況下,它可能非常有用。謝謝埃德溫提醒我。 – Janne 2012-06-07 06:27:25

0

South對Heroku很有效。

+0

很高興看到你閱讀海報的問題,提到它。 – Edwin 2012-02-29 23:50:19

+1

我不確定這是否是諷刺...他說南似乎是一個解決方案,我只是驗證它在Heroku上效果很好。 – thirteenpixels 2012-05-17 14:12:43

相關問題