有没有办法解决Rails删除的迁移?

时间:2016-06-08 09:03:27

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 migration rails-migrations

我碰巧删除了迁移,我不想还原这些已删除的迁移。

这是rake db:migrate:status产生的结果:

 Status   Migration ID    Migration Name
------------------------------------------------------

   up     0               ********** NO FILE *********
   up     20150209023430  Create users 
   up     20150320184628  ********** NO FILE **********
   up     20150322004817  Add roles to users
   up     20150403190042  ********** NO FILE **********

rake db:migraterake db:rollback命令因缺少文件而无效。

我无意丢失数据,因此我不想使用rake db:droprake db:reset

如何才能执行迁移回滚以及如何摆脱丢失的文件?

2 个答案:

答案 0 :(得分:6)

亚历山大,你可以摆脱那些不存在的迁移。 当你执行rake db:migrate:status时,它会显示在问题中。

因此您可以使用纯SQL查询从schema_migrations表中手动删除这些版本。

delete from schema_migrations where version = <version_number> 通过执行上面的查询,它将被解决。

答案 1 :(得分:3)

如果你能找到迁移的时间戳 - 文件名的数字部分,那么你可以这样做:

rake db:migrate:down VERSION=20100905201547

您可以使用rake db:migrate:status

找到时间戳
相关问题