rake db中的Rails等待迁移:test:prepare

时间:2013-07-30 13:46:50

标签: ruby-on-rails postgresql activerecord database-migration

我已经运行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然后rake db:test:prepare解决了这个问题,但我很乐意为任何能够解释导致问题的人提供解决方案。

1 个答案:

答案 0 :(得分:1)

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

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

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