2017-02-09 141 views
1

我最近將生產服務器遷移到Heroku。在這樣做的時候,我跟着Heroku的documentation to export and import my database to their servers在數據庫導入後遷移標記遷移

現在,當我嘗試使用heroku run rake db:migrate遷移我的數據庫時,出現表已存在的錯誤。看起來好像migrate從頭開始,就好像數據庫是新的一樣。

如何快速轉發db:migrate,以便從第二個最近的遷移文件開始? 自從數據庫導入生產後,我對本地數據庫進行了一次更改,現在我需要遷移生產數據庫。

+1

備份舊數據庫時,您沒有轉儲'schema_migrations'嗎? Rails會跟蹤在數據庫中運行了哪些遷移,因此複製數據庫時不應出現任何遷移問題。 –

+0

我做了「pg_dump -U postgres -Fc --no-acl --no-owner database_name> backup.dump」。難道這不應該得到它? – Ryan

+0

本應該得到一切。恢復之前,您是否設置了數據庫?這會將'schema.rb'應用到你的數據庫(它將創建所有的表)。一些快速的黑客選項(你必須手動確保所有東西都在那裏,如果你這樣做的話處於正確的狀態):(1)刪除你所有的遷移,因爲它們應該是臨時的,並且現在清理掉, (2)手動填充'schema_migrations',以便db:migrate'認爲它們都已經運行。 –

回答

0

由於我從來沒有計劃創建一個新的空數據庫,我最終只是將所有舊的遷移從db/migrate移動到我命名爲db/archive的文件夾。