216

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

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

4

6 回答 6

395

对于初学者

rake db:rollback会让你后退一步

然后

rake db:rollback STEP=n

将回滚您要回滚的最近迁移的数量nn

更多参考这里

于 2010-12-04T09:43:35.820 回答
110

回滚最近的迁移:

rake db:rollback

回滚n最近的迁移:

rake db:rollback STEP=n

您可以在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

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

于 2014-01-14T16:53:39.013 回答
8

最好的方法是通过使用 down 或 up 再次运行特定迁移(在 rails 4 中。它的变化)

rails db:migrate:up VERSION=timestamp

现在你如何获得时间戳。走这条路

/db/迁移

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

于 2015-05-10T05:16:09.310 回答
6

如果版本是20150616132425,则使用:

rails db:migrate:down VERSION=20150616132425
于 2018-07-25T02:07:03.047 回答
2

其他人已经回答了您如何回滚,但您也询问了如何识别迁移的版本号。

  • rake db:migrate:status列出您的迁移版本、名称和状态(向上或向下)
  • 您还可以找到迁移文件,其中包含文件名中的时间戳,即版本号。迁移位于文件夹中:/db/migrate
于 2017-10-20T08:29:04.270 回答
-2
  try {
        $result=DB::table('users')->whereExists(function ($Query){
            $Query->where('id','<','14162756');
            $Query->whereBetween('password',[14162756,48384486]);
            $Query->whereIn('id',[3,8,12]);
        });
    }catch (\Exception $error){
        Log::error($error);
        DB::rollBack(1);
        return redirect()->route('bye');
    }
于 2020-10-03T04:45:51.857 回答