在rails中显示待定迁移

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在rails中显示待定迁移相关的知识,希望对你有一定的参考价值。

是否有rake任务显示rails应用程序中的挂起迁移?

答案

rake db:migrate:status(Rails 3到5)或rails db:migrate:status(Rails 5)将实现这一目标。见this commit

另一答案

如果您想查看已完成或待处理的迁移量,可以使用以下命令查看。

rails db:migrate:status

更多相关链接:Rails Active Record Migration

另一答案

rake db:abort_if_pending_migrations(至少在Rails 2.3.3中,不确定何时引入)。描述说“如果有待处理的迁移,则会引发错误”。这似乎更多地用作其他任务的先决条件,但我猜你可以将它用于你的目的。

编辑:这是刚刚生成并且未运行“测试”迁移后的输出示例

rails_project theIV$ rake db:abort_if_pending_migrations
(in /Users/theIV/Sites/rails_project/)
You have 1 pending migrations:
  20090828200602 Test
Run "rake db:migrate" to update your database then try again.
另一答案

rake db:version将在Rails 2上实现这一目标。

另一答案

此命令将列出所有迁移及其状态(UPDOWN

Rails 3和4

rake db:migrate:status

Rails 5

rake db:migrate:status

# Or

rails db:migrate:status
另一答案

这适用于rails 5.2

ActiveRecord::Base.connection.migration_context.needs_migration?
另一答案

尝试rake -h(帮助)并查看rake -n(= rake --dry-run)。所以像rake -n db:migrate这样的东西可能会得到你想要的东西。

另一答案

按照命令检查迁移状态:

rake db:migrate:status

要么

当您运行服务器时,它将显示一条消息,以便首先运行挂起的迁移。

另一答案

可能不是OP所要求的,但如果您只是需要快速检查是否有任何迁移待在rake任务中使用,而不是诉诸于

rake db:migrate:status | grep down(如果你在Windows上可能不起作用)

ActiveRecord的:: Migration.check_pending! (引发你需要救援的ActiveRecord :: PendingMigrationError)

你可以使用needs_migration吗?方法:https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class

另一答案

如果您需要bash one-liner来确定是否运行迁移(例如,只有在有挂起的迁移时才在Heroku release phase command中迁移),这可以:

(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."

以上是关于在rails中显示待定迁移的主要内容,如果未能解决你的问题,请参考以下文章

无法在实体框架中生成显式迁移

在 Rails 中恢复特定的旧迁移,而不恢复以后的迁移

在 rails upgrade 迁移条目从模式迁移表中删除后

在 Rails 5 中添加引用列迁移

如何在 Rails 3 中迁移数据?

如何在 Rails 迁移中添加检查约束?