0

最初的问题是某些迁移文件最初是在机器上运行的(如生产)。后来,一些迁移​​不知何故被删除,无法恢复。

因此,为了让新机器启动并运行该应用程序,我必须手动重新创建丢失的迁移。

因此,已经执行了已删除迁移的机器现在正在抛出这些错误。

PG::Error: ERROR: relation "some_relation" already exists

我不能只是db:reset生产数据库,因为我不能丢失这些数据。

当我运行时,rake db:test:prepare会出现这样的情况:

You have 4 pending migrations:
  20130112203055 CreateSomeTable
  20130113180203 AddSomeColumnToTable
  20130113204017 ChangeSomeOtherColumns
  20130311203729 CreateAnotherTable
Run `rake db:migrate` to update your database then try again.

显然,运行db:migrate会给出如上所述的 PG::Error。问题是架构更改已经通过删除的迁移完成。上述“待定”迁移必须在事后重新创建。

有没有办法解决这个问题,所以db:migrate再次起作用?

4

1 回答 1

1

试试下面的,

rake db:migrate:down VERSION=20121031XXXXXXXX
rake db:migrate

20121031XXXXXXXX迁移名称的日期戳在哪里。换句话说,您将拥有一个名为20120410214815_some_relation.rb(like) 的迁移,然后从文件名中复制日期戳并将其粘贴到命令中。这是Rails Guide on Migrations 供参考

于 2013-03-19T16:13:11.650 回答