如何使用rake db:migrate只回滚一步

mko*_*mko 185 rake ruby-on-rails dbmigrate

在文件db/migrate夹中添加迁移文件并运行后rake db:migrate,我想回到上一步,我认为使用VERSION=n是正确的方法,但我不知道使用n的正确值.有没有命令检查当前的n值?

如果有人能提供有关如何使用的完整说明,那就太好了rake db:migrate.

rwi*_*ams 337

对于初学者

rake db:rollback 会让你退后一步

然后

rake db:rollback STEP=n

将推出你回来n迁移哪里n是要回滚最近的迁移数.

这里有更多参考.


Aje*_*i32 89

回滚最近的迁移:

rake db:rollback
Run Code Online (Sandbox Code Playgroud)

回滚n最近的迁移:

rake db:rollback STEP=n
Run Code Online (Sandbox Code Playgroud)

您可以在Rails指南中找到有关使用Rails迁移任务进行rake的完整说明,以便运行迁移.


这里还有一些:

  • rake db:migrate - 运行尚未运行的所有迁移
  • rake db:migrate VERSION=20080906120000 - 运行所有必要的迁移(向上或向下)以获得给定版本
  • rake db:migrate RAILS_ENV=test - 在给定环境中运行迁移
  • rake db:migrate:redo - 回滚一次迁移并再次运行
  • rake db:migrate:redo STEP=n- 回滚上次n迁移并再次运行它们
  • rake db:migrate:up VERSION=20080906120000- 运行up给定迁移的方法
  • rake db:migrate:down VERSION=20080906120000- 运行down给定迁移的方法

并回答您关于从哪里获得迁移版本号的问题:

版本是迁移文件名的数字前缀.例如,要迁移到版本20080906120000运行

$ rake db:migrate VERSION=20080906120000
Run Code Online (Sandbox Code Playgroud)

(来自Rails指南中的运行迁移)

  • 当rake db:rollback无法回滚最近的迁移时,我不得不使用rake db:migrate VERSION = <second last version date>并且它工作正常 (2认同)

小智 8

最好的方法是使用向下或向上运行特定的迁移(在rails 4.它的变化)

rails db:migrate:up VERSION = timestamp

现在你如何得到时间戳.转到这条路

/ DB /迁移

确定要还原的迁移文件.从该文件名中选择时间戳.


小智 5

如果版本是20150616132425,则使用:

rails db:migrate:down VERSION=20150616132425
Run Code Online (Sandbox Code Playgroud)