2012-03-16 19 views
2

我已經在Heroku應用上工作了好幾個月。我們最近建立了一個臨時服務器,偶爾還有sync the staging db with the production db。在使用的三個主要命令是:Heroku和Rails:將db轉移到staging和db:migrate

$ heroku pgbackups:capture --app myapp 

$ heroku pg:reset DATABASE --app myapp-staging --confirm myapp-staging" 

$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app myapp` --app myapp-staging 

的問題是,在運行第三個命令後,我需要運行heroku run rake db:migrate --app myapp-staging。我們現在有幾十個遷移,其中包括一些涉及我們已刪除或重命名的Ruby類。

這會導致遷移無法完全運行。這裏有什麼解決方案?我應該刪除舊的遷移失敗,並將這些更改提交給git repo嗎?

+0

爲什麼你需要運行遷移 - 代碼和數據應該是,一旦你一樣這樣做。 – 2012-03-16 14:22:24

+0

@NeilMiddleton我更新了我的問題 - 我相信pg:reset命令是重置模式的原因。我們正試圖將這個過程簡化爲我們的設計人員可以運行的耙子任務。第二條命令是必需的,因爲我們並不假定所有遷移都被推送到分段和生產並同時運行 - 我們可能會在分段中測試遷移,或者有人可能會推入生產而無需先推進分段。 – 2012-03-16 20:02:35

回答

0

重新運行此腳本修復了錯誤,所以它看起來像架構應該複製。對於像我這樣看到失敗遷移的人,pgbackups:restore命令可能會失敗,請重新運行該命令。

+0

我應該補充說,在發佈這個問題之前,我嘗試重新運行腳本,並且沒有任何錯誤引起了我的注意。 – 2012-03-20 00:07:13