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

如何使用Rails将长文本存储到MySql数据库?,mysql,ruby-on-rails,text,Mysql,Ruby On Rails,Text,我正在尝试将一个长文本(在我的例子中是一个原始rss提要,但也可以是一篇长博客文章或类似内容)存储到MySql数据库中 我有一个迁移: change_column :contents, :description, :longtext 但这给出了一个schema.rb,其中包含: t.text "description", :limit => 2147483647 当限制实际上应设置为4294967295时 为什么Rails会设置一个上限,这个上限是可能的一半?我不知

我正在尝试将一个长文本(在我的例子中是一个原始rss提要,但也可以是一篇长博客文章或类似内容)存储到MySql数据库中

我有一个迁移:

change_column :contents, :description, :longtext
但这给出了一个schema.rb,其中包含:

t.text     "description",       :limit => 2147483647
当限制实际上应设置为4294967295时


为什么Rails会设置一个上限,这个上限是可能的一半?

我不知道Rails在以前的版本中是否正式支持:longtext,但在当前的版本中,根据::longtext实际上没有指定为合法的数据类型。我认为这只是mysql适配器将其转换为文本的一种方便

正确的方法是:

更改列:内容、说明、文本、限制=>4294967295

请记住,使用多字节字符时,有效最大大小较小

编辑:仔细考虑一下,rails的大小减半是有道理的。重新阅读关于这个主题的文章,他们谈到了有效尺寸。我猜指定2147483647可能会导致使用2字节UTF-8字符填充时的有效大小为4294967295。由于UTF-8是ruby 1.9中的默认编码(至少在我的机器上是这样),所以这是唯一正确的方法。我想

ruby-1.9.2-p136 :002 > "".encoding
=> #<Encoding:UTF-8> 
ruby-1.9.2-p136:002>“”。编码
=> # 

谢谢!您所说的有效大小和rails utf-8默认编码非常有意义。