如何使用Rails将长文本存储到MySql数据库?

我试图将一个长文本(在我的情况下是一个原始的RSS源,但也可能是一篇很长的博客文章或类似文件)存储到MySql数据库。

我有一个迁移:

change_column :contents, :description, :longtext 

但是这给出了一个schema.rb:

 t.text "description", :limit => 2147483647 

当限制实际上应该设置为4294967295。

为什么Rails施加的上限是应该可能的一半?

我不知道rails是否支持:longtext正式在以前的版本中,但在当前版本中根据rails文档 ,:longtext实际上并未指定为legal数据类型。 我认为这只是mysql适配器的一个便利,它将其转换为:text。

这样做的正确方法是:

change_column:contents,:description,:text,:limit => 4294967295

请记住,使用多字节字符时,有效最大大小会减少。

编辑:关于它的思考,并且轨道将尺寸减半。 重新阅读关于这个主题的mysql文档 ,他们说的是有效的大小。 我想在填充2字节UTF-8字符时,指定2147483647可能会导致有效大小为4294967295。 由于UTF-8是ruby 1.9中的默认编码(至少在我的机器上),因此它是唯一正确的方法。 我认为?!

 ruby-1.9.2-p136 :002 > "".encoding => #