gpt4 book ai didi

mysql - 限制 : 1 difference in schema. rb bool 字段

转载 作者:行者123 更新时间:2023-11-29 04:06:55 25 4
gpt4 key购买 nike

我最近开始注意到,在部署到生产环境之后,我在我的 db/schema.rb 中看到了这个 git diff:

-    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 没有 boolean 列类型,Rails 使用 TINYINT(1) 列类型作为 :boolean 属性,这反射(reflect)在模式时被转储到 schema.rb。到目前为止,一切都很好。但是,如果试图将相同的 schema.rb 加载到 PostgreSQL 中,它将失败,因为 Postgres 确实 具有 BOOLEAN 列类型,但声明了一个BOOLEAN 列的长度是非法的。当从 MySQL 数据库中转储 :boolean 属性时,通过删除 limit: 1 选项修复了此错误(无论如何都没有必要)。

因此,如果上次转储您的架构(在您运行迁移时发生),您使用的是 Rails 4.2.2 或更早版本,您将在 schema.rb 中获得 limit: 1 ,如果您随后升级到 4.2.3 并再次转储您的架构,limit: 1 将会消失。

除了修复上述错误之外,此更改没有任何影响 — 您的 schema.rb 将以与之前完全相同的方式运行 — 因此无需担心。

关于mysql - 限制 : 1 difference in schema. rb bool 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32009672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com