Rails版本= 2.3.8
当比较我的两个网站的模式时,每个网站都有一个几乎相同的代码库,我注意到一些非常奇怪的东西。对于完全相同的表,一个站点的架构显示:
t.integer "member_feed", :limit => 1, :default => 1
和另一个:
t.boolean "member_feed", :default => true
两者的创建方式没有区别。实际上,第一个实际上是在创建网站时从第二个中提取的。第一个模式至少有40个不同的情况,其中布尔值显示不正确,我必须进入并使用change_column
迁移更改每个。请注意,当未明确定义布尔值时,功能肯定存在差异。
任何人都知道可能导致这种情况的原因是什么?感谢。
答案 0 :(得分:2)
当您从不同的操作系统运行迁移时会发生这种情况。这不是rails的mysql有问题,而是实际的 mysql。
它的某些版本只是没有存储有限制和其他标志的事实......通常是那些实际上有内置布尔类的因此,因此无需使用limit => 1(你会发现它也无法为十进制值存储某些版本的“精度”)
问题出现是因为mysql假设所有其他版本都有内置类......当然他们没有。
这是一个无法修复的集成系统错误。抱歉。 :(