0

所以我在工作中加入了这个 Rails 项目,我在本地 devbox 上运行了我自己的副本。我试图运行测试以查看结果,但 rake 回来抱怨说我首先要进行 5 次出色的迁移。我刚开始尝试运行rake db:migrate,但由于迁移试图​​创建已经存在的表,所以没有成功。那时我意识到这些迁移已经运行,但由于某种原因它认为它目前处于较旧的迁移。

有什么方法可以让 Rake 在迁移历史中向前推进,而不需要回滚和重做迁移?

4

2 回答 2

1

您可以更新 schema_migrations 表以获取要跳过的迁移编号。这是 rails 用来跟踪已经运行的迁移的表格。

select * from schema_migrations

会给你类似的东西

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

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

于 2013-06-19T01:47:55.350 回答
0

您可以:

  1. 删除有问题的迁移,创建一组新的迁移来代替它们(危险)

  2. 做你提到的 rake db:reset 。

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

我恳请您选择#2,因为#1 可能会导致问题出现。如果您运行 rake db:reset ,您的数据库副本应该代表您将获得的结果。

于 2013-06-19T01:03:25.140 回答