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

Posted

技术标签:

【中文标题】在 rails upgrade 迁移条目从模式迁移表中删除后【英文标题】:After rails upgrade migration entry are getting delete from schema migration table 【发布时间】:2021-12-26 13:17:48 【问题描述】:

从 rails 5.1 升级到 rails 6.1 后,除了最后一个条目外,所有条目都将从 schema_migrations 表中删除。

我在所有环境中都面临这个问题。对于测试环境,我通过注释这行 ActiveRecord::Migration.maintain_test_schema! 修复了测试环境,但是在开发和非生产环境中,我仍然面临这个问题。

我尝试用谷歌搜索它,但我没有看到任何与之相关的文章。谁能提供一些见解?

Rails 6.1.0 红宝石 3​​.0.0 activerecord-oracle_enhanced-adapter 6.1.4 数据库甲骨文

【问题讨论】:

Rails Engine 6.1.4.1 和 postgresql 数据库有同样的问题。在这个级别有一种气味,似乎与 db 无关:github.com/rails/rails/issues/26948 【参考方案1】:

如果您没有待处理的更改,只需删除迁移。

https://edgeguides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you

移民,尽管可能很强大,但不是权威来源 为您的数据库架构。您的数据库仍然是权威的 资源。默认情况下,Rails 会生成 db/schema.rb 来尝试 捕获数据库架构的当前状态。

创建一个新的实例往往更快,更不容易出错 通过 bin/rails 加载模式文件来获取应用程序的数据库 db:schema:load 比它重播整个迁移历史。老的 如果这些迁移使用 改变外部依赖或依赖应用程序代码 与您的迁移分开发展。

【讨论】:

以上是关于在 rails upgrade 迁移条目从模式迁移表中删除后的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 迁移 - 创建新的数据库模式

Rails 迁移总是在模式中插入空格或更改列的顺序

是否有任何与 rails ActiveRecord 迁移相当的 Firestore 数据库模式迁移概念?

如何在 Rails 3 中迁移数据?

如何从 SQLite 迁移到 PostgreSQL (Rails)

如何从现有迁移文件中删除脚本 rails