我有一个名为“20120311145341_create_resource1s.rb”的迁移。我意外地在数据库中删除了该表。我运行了“rake db:migrate”但它没有恢复该表。如何恢复?
答案 0 :(得分: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
我希望它有所帮助。