所以我在工作中跳到了这个Rails项目,我在我的本地devbox上运行了自己的副本。我试图运行测试以查看结果是什么,但rake回来抱怨我有5次出色的迁移要做。我首先尝试运行rake db:migrate
但由于尝试创建已存在的表的迁移而无效。就在那时,我意识到这些迁移已经运行,但由于某种原因,它认为它目前正在迁移。
有没有办法让Rake在迁移历史记录中继续前进而不进行回滚并重做迁移?
答案 0 :(得分:1)
您可以更新schema_migrations表以包含要跳过的迁移号。这是表格轨道用来跟踪已经运行的迁移。
select * from schema_migrations
会给你类似的东西
version
----------------
20121026165533
20121026183631
20121212144141
20130205205009
将要跳过的迁移号添加到此表中。
答案 1 :(得分:0)
你可以:
删除有问题的迁移,进行一组新的迁移取代(危险)
按照你的提法做rake db:reset。
如果您是该项目的唯一开发人员,我只建议1。但实际上,你的迁移和种子应处于不保证这一点的状态。
我会恳请你采取#2,因为#1可能会导致问题进入轨道。您的数据库副本应代表您在运行rake db:reset时将获得的内容。