原始問題是某些遷移文件最初在計算機上運行(如生產)。後來,一些遷移被刪除,無法恢復。如何修復遷移以便rake db:migrate再次運行
因此,爲了讓一臺新機器與應用程序一起運行,我不得不手動重新創建缺少的遷移。
因此,已執行已刪除遷移的機器現在正在拋出這些錯誤。
PG::Error: ERROR: relation "some_relation" already exists
我不能只是db:reset
對生產數據庫,因爲我不能失去這個數據。
當我運行,rake db:test:prepare
像這樣顯示出來:
You have 4 pending migrations:
20130112203055 CreateSomeTable
20130113180203 AddSomeColumnToTable
20130113204017 ChangeSomeOtherColumns
20130311203729 CreateAnotherTable
Run `rake db:migrate` to update your database then try again.
顯然,運行db:migrate
會給PG ::錯誤如上所述。問題是模式更改已通過已刪除的遷移完成。事實之後,上述「未決」遷移必須重新創建。
有沒有辦法解決這個問題,所以db:migrate
再次工作?
在創建''some_relation''的遷移中,你能檢查一下該表是否已經存在嗎?做一些條件語句只創建表/索引/等,如果他們還沒有被創建? – MrDanA 2013-03-19 16:07:17