2009-06-17 68 views
1

我在遷移中有一個「self.drop」中的錯誤,以至於我無法回滾過去的遷移。我如何從頭開始並從遷移001建立?此外,有沒有辦法做到這一點沒有失去我的數據(這只是測試,但仍...)如何避免在ruby中出現錯誤的回滾遷移?

+0

這取決於您如何更改該遷移中的數據庫。添加了什麼?刪除了什麼?你能提供更多信息嗎? – 2009-06-17 18:26:10

回答

1
rake db:drop 
rake db:create 
rake db:migrate 

這將重置您的數據庫,並運行所有遷移。如果你不想失去你的數據,你可以使用插件yaml_db保存:

rake db:data:dump # stores all data in db/data.yml 
... 
rake db:data:load # loads db/data.yml to database 

如果在遷移的錯誤,您可以編輯它,然後嘗試回滾。

1

您可以評論self.down遷移中的所有語句並回滾到上一個db版本。

然後使用gui/web數據庫客戶端手動應用更改以在遷移之前匹配數據庫模式。

之後您將能夠再次運行遷移並且您的數據不會丟失。

0

我意識到這是一個老問題,但是imho仍然相關。如果你想從頭開始重新創建數據庫,一個不會回退並重新運行遷移,一個只是做

rake db:setup 

這將下降,創建和所有遷移的當前組合狀態填充數據庫。這是因爲,在大型系統中,運行所有遷移可能不再有效。但是,運行schema.rb將始終有效。

我的建議也是儘可能地避免遷移回滾,除非您剛剛創建遷移並希望在將遷移推送到您的團隊或任何部署之前進行一些添加/打字/修正。