布尔字段的Rails数据库模式生成不一致

时间:2011-01-10 20:23:56

标签: ruby-on-rails migration boolean

Rails版本= 2.3.8

当比较我的两个网站的模式时,每个网站都有一个几乎相同的代码库,我注意到一些非常奇怪的东西。对于完全相同的表,一个站点的架构显示:

t.integer  "member_feed",   :limit => 1, :default => 1

和另一个:

t.boolean  "member_feed",   :default => true

两者的创建方式没有区别。实际上,第一个实际上是在创建网站时从第二个中提取的。第一个模式至少有40个不同的情况,其中布尔值显示不正确,我必须进入并使用change_column迁移更改每个。请注意,当未明确定义布尔值时,功能肯定存在差异。

任何人都知道可能导致这种情况的原因是什么?感谢。

1 个答案:

答案 0 :(得分:2)

当您从不同的操作系统运行迁移时会发生这种情况。这不是rails的mysql有问题,而是实际的 mysql。

它的某些版本只是没有存储有限制和其他标志的事实......通常是那些实际上有内置布尔类的因此,因此无需使用limit => 1(你会发现它也无法为十进制值存储某些版本的“精度”)

问题出现是因为mysql假设所有其他版本都有内置类......当然他们没有。

这是一个无法修复的集成系统错误。抱歉。 :(