因此,我在工作中跳到了这个Rails项目上,我有我自己的本地副本。我试图运行测试来看看结果是什么,但是耙子回来抱怨说我有5次优秀的迁移要做。我第一次尝试运行rake db:migrate
,但由于迁移尝试创建已存在的表,因此无法运行。那时我意识到这些迁移已经运行,但由于某种原因,它认为它目前处于较老的迁移中。在Rails中,如何在不执行数据库迁移的情况下进行数据库迁移?
是否有任何方法让Rake在迁移历史中向前移动而不进行回滚并重新迁移迁移?
因此,我在工作中跳到了这个Rails项目上,我有我自己的本地副本。我试图运行测试来看看结果是什么,但是耙子回来抱怨说我有5次优秀的迁移要做。我第一次尝试运行rake db:migrate
,但由于迁移尝试创建已存在的表,因此无法运行。那时我意识到这些迁移已经运行,但由于某种原因,它认为它目前处于较老的迁移中。在Rails中,如何在不执行数据库迁移的情况下进行数据库迁移?
是否有任何方法让Rake在迁移历史中向前移动而不进行回滚并重新迁移迁移?
您可以更新schema_migrations表以获得您想跳过的迁移编号。这是桌面导轨用来跟踪已经运行的迁移。
select * from schema_migrations
会给你像
version
----------------
20121026165533
20121026183631
20121212144141
20130205205009
添加你想跳过这个表迁移数。
你既可以:
删除迁移问题,制定一套新的迁移来取代他们的位置(危险)
执行耙分贝:重置你所说的。
我只会建议1,如果你是该项目的唯一开发者。但实际上,你的迁徙和种子应该处于这样一种状态,以至于不能保证这一点。
我会恳请您采取#2,因为#1可能会导致问题落空。您的数据库副本应该代表您将运行rake db时得到的结果:重置。
出于兴趣,您可以尝试在您的命令提示符下执行以下'rake db:drop && rake db:create && rake db:migrate' – David
运行'rake db:test:prepare',到与开发数据库相同的迁移 – house9