在Rails中,如何在不执行数据库迁移的情况下进行迁移?

时间:2013-06-19 00:46:49

标签: ruby-on-rails database rake rails-migrations

所以我在工作中跳到了这个Rails项目,我在我的本地devbox上运行了自己的副本。我试图运行测试以查看结果是什么,但rake回来抱怨我有5次出色的迁移要做。我首先尝试运行rake db:migrate但由于尝试创建已存在的表的迁移而无效。就在那时,我意识到这些迁移已经运行,但由于某种原因,它认为它目前正在迁移。

有没有办法让Rake在迁移历史记录中继续前进而不进行回滚并重做迁移?

2 个答案:

答案 0 :(得分:1)

您可以更新schema_migrations表以包含要跳过的迁移号。这是表格轨道用来跟踪已经运行的迁移。

select * from schema_migrations

会给你类似的东西

   version     
----------------
 20121026165533
 20121026183631
 20121212144141
 20130205205009

将要跳过的迁移号添加到此表中。

答案 1 :(得分:0)

你可以:

  1. 删除有问题的迁移,进行一组新的迁移取代(危险)

  2. 按照你的提法做rake db:reset。

  3. 如果您是该项目的唯一开发人员,我只建议1。但实际上,你的迁移和种子应处于不保证这一点的状态。

    我会恳请你采取#2,因为#1可能会导致问题进入轨道。您的数据库副本应代表您在运行rake db:reset时将获得的内容。