协慌网

登录 贡献 社区

如何回滚特定的迁移?

我有以下迁移文件db\migrate\20100905201547_create_blocks.rb

如何专门回滚该迁移文件?

答案

rake db:rollback STEP=1

如果您要回滚的迁移是最后一次应用,则这是一种方法。您可以用 1 代替要返回的许多迁移。

例如:

rake db:rollback STEP=5

还将回滚以后发生的所有迁移(4、3、2 以及 1)。

要将所有迁移回滚到目标迁移(包括目标迁移),请使用:(此更正的命令是在所有注释指出原始帖子中的错误之后添加的)

rake db:migrate VERSION=20100905201547

为了仅回滚一个特定的迁移(无序),请使用:

rake db:migrate:down VERSION=20100905201547

请注意,这不会回滚任何中间的迁移 - 仅列出其中的一个。如果这不是您想要的目的,则可以安全地运行rake db:migrate ,它将仅重新运行该rake db:migrate ,而跳过以前未回滚的其他任何内容。

而且,如果您想不按顺序迁移单个迁移,则还有一个相反的db:migrate:up

rake db:migrate:up VERSION=20100905201547
rake db:migrate:down VERSION=20100905201547

将回滚特定文件。


要查找所有迁移的版本,可以使用以下命令:

rake db:migrate:status

或者,仅迁移文件名的前缀就是您需要回滚的版本。


有关迁移,请参见Ruby on Rails 指南条目

要回滚上一次迁移,您可以执行以下操作:

rake db:rollback

如果要回滚特定版本的迁移,应执行以下操作:

rake db:migrate:down VERSION=YOUR_MIGRATION_VERSION

例如,如果版本为 20141201122027,则可以执行以下操作:

rake db:migrate:down VERSION=20141201122027

回滚该特定迁移。