2012-03-11 121 views
1

手動刪除它,我有一個名爲「20120311145341_create_resource1s.rb」遷移。我無意中在數據庫中刪除了該表。我跑了「耙分貝:遷移」,但它不會恢復該表。如何恢復它?恢復遷移後的數據庫

回答

7

,因爲我認爲你已經在最新的移民無法再次運行db:migrate

a)如果你想重新遷移是最新的一個,你可以做以下的回退,然後再運行它。

rake db:rollback
rake db:migrate

b)若它不是最新的遷移,你需要列出文件db/migrate目錄,註釋以前遷移的版本20120311145341_create_resource1s.rb,然後運行:

rake db:migrate VERSION=20120309101821(版本改變爲適合你)
rake db:migrate

請注意,如果你得到一個錯誤,像這樣的Mysql2::Error: Unknown table 'xxx': DROP TABLE 'xxx'可以變通辦法,確保你在遷移下來的方法檢查表存在:

def self.down 
    drop_table :xxx if ActiveRecord::Base.connection.table_exists? 'xxx' 
    end 

我希望它能幫助。