2012-08-04 55 views
0

幾個月前我意外刪除了我的生產數據庫heroku雪松堆棧。我試圖通過heroku run rake db:migrate重新創建數據庫,但是我的遷移出現了問題,並且失敗了。然後,我安裝了水龍頭,並做了一個heroku db:push和一切都是正確的與世界。我可以運行heroku運行rake數據庫:遷移後使用水龍頭和heroku db:推?

運行本地遷移更新生產數據庫後,我現在可以使用heroku run rake db:migrate嗎?還是我永遠與水龍頭和heroku db:push

也許更好的方法來問這個問題:heroku run rake db:migrate會經歷我所有的遷移(並可能失敗),還是隻會通過自上次heroku db:push以來發生的遷移?

回答

0

查看數據庫中的schema_migrations表。這是Rails用來確定要運行哪些遷移。它有一個包含Rails已經應用到您的應用程序的每個遷移版本的列。例如,我在db/migrate以下文件:

  • 20110415064108_create_users.rb

20110415064108被列爲我schema_migrations表中的一行。自上次運行rake db:migrate以來,db/migrate中的每個其他遷移文件都是如此。

假設水龍頭(我一無所知)其全部推這個schema_migraions表的生產,你應該能夠創造新的遷移和與rake db:migrate生產無故障(只有那些新創建的遷移運行它們會因爲他們的版本號是schema_migrations中唯一缺失的版本號。

+0

感謝有關schema_migrations表的提示。我剛剛進行了遷移,將其推到了生產環境中,然後heroku運行rake db:migrate工作。謝謝。 – tbone 2012-08-04 15:31:52

相關問題