我已经运行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
解决了这个问题,但我很乐意为任何能够解释导致问题的人提供解决方案。
答案 0 :(得分:1)
我怀疑画廊的迁移工作尚未正确执行。如果您100%确定表中的所有内容都正确,则可以将迁移版本提升到库迁移的版本。
要执行此操作,请查找您的图库迁移的时间戳(迁移文件前面的14个数字,在本例中为20130724211328
),并将其作为新行插入到表schema_migrations
中(这是由Rails在成功执行迁移后自动完成的。)
如果表格为空,您也可以删除表格galleries
并再次运行rake db:migrate
。这样,您还可以确保迁移不会触发任何错误。