2010-12-04 32 views
150

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

如果任何人都可以提供关于如何使用rake db:migrate的完整说明,那将是非常好的。

回答

279

对于初学者

rake db:rollback将让你退一万步

然后

rake db:rollback STEP=n

将推出你回来n迁移,其中n是要回滚最近的迁移数。

更多参考文献here

71

回滚最近的迁移:

rake db:rollback 

回退n最近的迁移:

rake db:rollback STEP=n 

你可以找到关于使用Rails的迁移任务的完整指示耙上Rails Guide for running migrations


下面是更多一些:

  • 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 

(从Rails的指南Running Migrations

+2

当耙分贝:回滚没有工作回滚最近的迁移,我不得不用耙分贝:迁移VERSION = <第二个版本日期>它工作得很好 – Omni 2015-03-26 03:57:50

7

最好的办法是通过再次向下运行的特定迁移或向上(在轨4.的变化)

导轨分贝:迁移:最多VERSION =时间戳

现在您如何获得时间戳。 转到这条路

/DB /迁移

标识要revert.pick从该文件名中的时间戳迁移文件。

+0

虽然这并没有回答这个问题,它确实是最好的方法。逐步回滚可能会导致错误,特别是在组中使用软件时。 – steel 2016-08-24 21:26:03

1

其他人已经回答了您如何回滚,但您也问过如何确定迁移的版本号。

  • rake db:migrate:status给你的迁移版本,名称和状态(向上或向下)
  • 你还可以找到迁移文件,该文件包含在文件名中的时间戳,就是版本号的列表。迁移位于文件夹中:/db/migrate
+0

顺便说一句,如果你运行状态命令,你可能会看到如下行: **********没有文件********** 这些迁移不存在于你当前的分支如果你使用git。 – 2017-10-20 08:32:17

相关问题