2012-03-11 69 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 

我希望它能帮助。