带有长文本的 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 处理 tinytexttextmediumtextlongtext,如果你正在使用的话。只需使用: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 迁移的主要内容,如果未能解决你的问题,请参考以下文章

添加带有rails迁移错误的整数数组列

rails 迁移更改了不相关的列

微信小程序之文本合成语音朗读及长文本分段播放处理

带有折线的文本在 Rails 中不起作用

在颤动中写长文本时如何制作段落?

将 Rails 项目从 MySQL 迁移到 MongoDB