我有一个迁移文件db\migrate\20100905201547_create_blocks.rb。

如何具体回滚该迁移文件?


当前回答

如果你使用的是Ruby on Rails 3

步骤:1(检查最后一次迁移)

bundle exec rake db:migrate:status

步骤:2(回滚上一次迁移)

bundle exec rake db:rollback

现在,您可以逐个安全地恢复迁移。

对于特定的迁移

Rails d migration <migration_name>

用于恢复多次迁移

bundle exec rake db:rollback STEP=n

其中n是要回滚的迁移次数。

例如:bundle exec rake db:rollback STEP=5

其他回答

您可以使用down migration命令回退迁移,如下所示:

rake db:migrate:down VERSION=20100905201547

我发现这些步骤最有用。

执行rails db:migrate:status命令查看状态。然后,您将对想要删除的迁移有一个很好的了解。

然后执行rails db:rollback命令将修改的内容逐一恢复。这样做之后,您可以再次检查状态,以充分自信。

下一步,如果您想删除或删除。执行rails d migration <migration_name>。这将清理您创建的版本。

完成这些之后,您可以继续进行新的更改。

如果是可逆迁移,并且是最后一次已执行的迁移,则执行rake db:rollback。你可以一直使用这个版本。

例如,如果迁移文件为20140716084539_create_customer_stats。Rb,回滚命令为:

rake db:migrate:down VERSION=20140716084539

迁移文件是这样的,

 20221213051020_my_migrations

在本例中,模型名应该是MyMigration。migration以一个复数词结尾,所以它以migrations结尾。

要回滚这个特定的迁移,您必须理解迁移名称的第一部分(迁移名称前面的数字)是迁移编号。

要回滚这次迁移,只需打开终端并写入,

rake db:migrate:down VERSION=migration_number

最后,你必须在终端中输入回滚这个特定的迁移,

在终端上写下面的命令回滚一个特定的迁移,上面的命令只是给你解释

rake db:migrate:down VERSION=20221213051020

只需记住,每次迁移都有不同的迁移编号,因此请仔细观察并手动复制、粘贴或键入。

如果你想要回滚和迁移,你可以运行:

rake db:migrate:redo

也就是:

rake db:rollback
rake db:migrate