带有长文本的 Rails 3 迁移
Posted
技术标签:
【中文标题】带有长文本的 Rails 3 迁移【英文标题】:Rails 3 Migration with longtext 【发布时间】:2011-05-25 12:22:21 【问题描述】:我需要在我的 Rails 脚本中将列类型从文本更改为长文本,但找不到有关如何执行此操作的任何信息。
有人遇到过这个吗?
谢谢! 丹尼斯
【问题讨论】:
(至少对于 rails 2,你可以指定 type :longtext FWIW) 【参考方案1】:text
类型为 mysql 处理 tinytext
、text
、mediumtext
和 longtext
,如果你正在使用的话。只需使用:limit => ...
指定上限
例子:
change_column :articles, :body, :text, :limit => 4294967295
limit
的默认值为 65535,正如预期的那样。
1 to 255 bytes: TINYTEXT
256 to 65535 bytes: TEXT
65536 to 16777215 bytes: MEDIUMTEXT
16777216 to 4294967295 bytes: LONGTEXT
可以在here 找到 MySQL 文档。
【讨论】:
它应该是“4294967295”而不是“4294967296”(即4.gigabytes - 1
),否则会引发Mysql2::Error: Display width out of range for column ....
。
我已经修改了我的答案以反映这一点。非常感谢维克兰特。
在 mysql 5.1.52 上,我使用了 16.megabytes - 1
的限制,但我仍然得到一个长文本,而不是中文本。知道为什么吗?谢谢。
All:这是 Rails 中的一个错误。几周前,它已在 4.0 分支中进行了修补。
@ChuckCallebs:我们能否获得修复此问题的 PR 的链接,以及它应该在哪个版本的 Rails 中发布?以上是关于带有长文本的 Rails 3 迁移的主要内容,如果未能解决你的问题,请参考以下文章