2013-06-19 86 views
0

因此,我在工作中跳到了这个Rails项目上,我有我自己的本地副本。我试图运行测试来看看结果是什么,但是耙子回来抱怨说我有5次优秀的迁移要做。我第一次尝试运行rake db:migrate,但由于迁移尝试创建已存在的表,因此无法运行。那时我意识到这些迁移已经运行,但由于某种原因,它认为它目前处于较老的迁移中。在Rails中,如何在不执行数据库迁移的情况下进行数据库迁移?

是否有任何方法让Rake在迁移历史中向前移动而不进行回滚并重新迁移迁移?

+0

出于兴趣,您可以尝试在您的命令提示符下执行以下'rake db:drop && rake db:create && rake db:migrate' – David

+0

运行'rake db:test:prepare',到与开发数据库相同的迁移 – house9

回答

1

您可以更新schema_migrations表以获得您想跳过的迁移编号。这是桌面导轨用来跟踪已经运行的迁移。

select * from schema_migrations 

会给你像

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

添加你想跳过这个表迁移数。

0

你既可以:

  1. 删除迁移问题,制定一套新的迁移来取代他们的位置(危险)

  2. 执行耙分贝:重置你所说的。

我只会建议1,如果你是该项目的唯一开发者。但实际上,你的迁徙和种子应该处于这样一种状态,以至于不能保证这一点。

我会恳请您采取#2,因为#1可能会导致问题落空。您的数据库副本应该代表您将运行rake db时得到的结果:重置。