限制:schema.rb 布尔字段有 1 个差异
limit: 1 difference in schema.rb boolean fields
我最近开始注意到,在部署到生产环境之后,我在我的 db/schema.rb
中看到这个 git 差异:
- t.boolean "published", limit: 1
+ t.boolean "published"
和
- t.boolean "visible", limit: 1, default: false
+ t.boolean "visible", default: false
鉴于 Rails 版本在两个环境中是相同的,这是否只是由于 MySQL 版本之间的差异造成的,分别是生产版 5.5.43 和开发版 5.6.23?
你的Rails版本有变化吗? Rails 最近发生的变化可以解释这一点:https://github.com/rails/rails/pull/19066
基本上,由于 MySQL 没有布尔列类型,Rails 使用 TINYINT(1)
列类型作为 :boolean
属性,这反映在架构时被转储到 schema.rb
。到目前为止,一切都很好。但是,如果有人试图将相同的 schema.rb
加载到 PostgreSQL 中,它将失败,因为 Postgres 确实 具有 BOOLEAN
列类型,但声明了 [=14] 的长度=] 列是非法的。当从 MySQL 数据库中转储 :boolean
属性时,通过删除 limit: 1
选项修复了此错误(无论如何都没有必要)。
因此,如果上次转储您的架构(发生在您 运行 迁移时),您使用的是 Rails 4.2.2 或更早版本,您将在 schema.rb
,如果您随后升级到 4.2.3 并再次转储您的架构,limit: 1
将会消失。
除了修复上述错误外,此更改没有任何效果 — 您的 schema.rb
将以与以前完全相同的方式运行 — 因此无需担心。
我最近开始注意到,在部署到生产环境之后,我在我的 db/schema.rb
中看到这个 git 差异:
- t.boolean "published", limit: 1
+ t.boolean "published"
和
- t.boolean "visible", limit: 1, default: false
+ t.boolean "visible", default: false
鉴于 Rails 版本在两个环境中是相同的,这是否只是由于 MySQL 版本之间的差异造成的,分别是生产版 5.5.43 和开发版 5.6.23?
你的Rails版本有变化吗? Rails 最近发生的变化可以解释这一点:https://github.com/rails/rails/pull/19066
基本上,由于 MySQL 没有布尔列类型,Rails 使用 TINYINT(1)
列类型作为 :boolean
属性,这反映在架构时被转储到 schema.rb
。到目前为止,一切都很好。但是,如果有人试图将相同的 schema.rb
加载到 PostgreSQL 中,它将失败,因为 Postgres 确实 具有 BOOLEAN
列类型,但声明了 [=14] 的长度=] 列是非法的。当从 MySQL 数据库中转储 :boolean
属性时,通过删除 limit: 1
选项修复了此错误(无论如何都没有必要)。
因此,如果上次转储您的架构(发生在您 运行 迁移时),您使用的是 Rails 4.2.2 或更早版本,您将在 schema.rb
,如果您随后升级到 4.2.3 并再次转储您的架构,limit: 1
将会消失。
除了修复上述错误外,此更改没有任何效果 — 您的 schema.rb
将以与以前完全相同的方式运行 — 因此无需担心。