如何使用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 => #