ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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


r
rwilliams

对于初学者

rake db:rollback 会让您后退一步

然后

rake db:rollback STEP=n

将为您回滚 n 个迁移,其中 n 是您要回滚的最近迁移的数量。

更多参考资料here


A
Ajedi32

回滚最近的迁移:

rake db:rollback

回滚 n 个最近的迁移:

rake db:rollback STEP=n

您可以在 Rails Guide for running migrations 上找到有关使用 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 指南中的 Running Migrations


当 rake db:rollback 无法回滚最近的迁移时,我不得不使用 rake db:migrate VERSION= 并且效果很好
H
Hemali

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

rails db:migrate:up VERSION=timestamp

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

/db/迁移

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


虽然这不能回答问题,但它确实是最好的方法。逐步回滚可能会导致错误,尤其是在团队中处理软件时。
G
Grant Miller

如果版本是 20150616132425,则使用:

rails db:migrate:down VERSION=20150616132425

j
jollierMisbrandedKeener

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

rake db:migrate:status 列出了您的迁移版本、名称和状态(向上或向下)

您还可以找到迁移文件,其中包含文件名中的时间戳,即版本号。迁移位于文件夹中:/db/migrate


顺便说一下,如果您运行 status 命令,您可能会看到如下行: ********** NO FILE ********** 如果您使用这些迁移,则当前分支上不存在这些迁移混帐。
N
Nicholas Alaeddin
  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');
    }

此问题已包含多个答案和一个已接受的答案。您能否解释(通过编辑您的答案)您的答案与其他答案的不同之处?还知道从长远来看,仅代码答案没有用。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅