2

我已经跑rake db:migrate了,我所有的迁移都跑了。但是,当我尝试运行时rake db:test:prepare,出现错误:

You have 1 pending migrations:
  20130724211328 CreateGalleries
Run `rake db:migrate` to update your database then try again.

然后rake db:migrate再次运行给出错误:

PG::Error: ERROR:  relation "galleries" already exists...

但在控制台中,我可以完全按照 CreateGalleries 迁移中所示的方式创建和操作 Gallery 模型。该表没有被创建,甚至没有在任何其他迁移中被提及。

似乎迁移运行得很好,但没有注册。任何想法如何解决这一问题?

编辑

rake db:drop db:create db:migrate我用then解决了这个问题rake db:test:prepare,但我很高兴将解决方案提供给任何能够首先阐明导致问题的原因的人。

4

1 回答 1

1

我怀疑画廊的迁移没有正确执行。如果您 100% 确定表中的所有内容都正确,则可以将迁移版本提升到画廊迁移的版本。

为此,请找到您的画廊迁移的时间戳(在本例中是迁移文件前面的 14 个数字20130724211328)并将其作为新行插入到表中schema_migrations(这在成功执行迁移后由 Rails 自动完成)。

如果表为空,您也可以删除表galleriesrake db:migrate再次运行。这样您还可以确保您的迁移不会触发任何错误。

于 2013-07-30T13:53:45.710 回答