【问题标题】:Rails 3 Migration with longtext带有长文本的 Rails 3 迁移
【发布时间】:2011-05-25 12:22:21
【问题描述】:

我需要在我的 Rails 脚本中将列类型从文本更改为长文本,但找不到有关如何执行此操作的任何信息。

有人遇到过这个吗?

谢谢! 丹尼斯

【问题讨论】:

  • (至少对于 rails 2,你可以指定 type :longtext FWIW)

标签: ruby-on-rails migration ruby-on-rails-3


【解决方案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 中发布?
猜你喜欢
  • 2011-07-28
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2019-05-17
  • 2013-05-01
  • 1970-01-01
相关资源
最近更新 更多