首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Rails将长文本存储到MySql DB?

如何使用Rails将长文本存储到MySql DB?
EN

Stack Overflow用户
提问于 2011-07-26 21:12:50
回答 1查看 9.4K关注 0票数 16

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

我使用以下工具进行迁移:

代码语言:javascript
复制
change_column :contents, :description, :longtext

但这会给出一个包含以下内容的schema.rb:

代码语言:javascript
复制
t.text     "description",       :limit => 2147483647

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

为什么Rails施加的上限是应该达到的上限的一半?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-26 21:23:15

我不知道rails在以前的版本中是否支持:longtext,但是根据rails documentation的说法,在当前版本中,:longtext实际上没有被指定为合法的数据类型。我认为这只是mysql适配器将其转换为:text的便利。

正确的做法是:

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

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

rails编辑:仔细考虑了一下,认为rails将大小减半是有道理的。重新阅读关于这个主题的mysql docs,他们谈到了有效大小。我猜指定2147483647可能会导致填充2字节UTF-8字符时的有效大小为4294967295。由于UTF-8是Ruby1.9中的默认编码(至少在我的机器上是这样),因此这是唯一正确的方法。我想?!

代码语言:javascript
复制
ruby-1.9.2-p136 :002 > "".encoding
=> #<Encoding:UTF-8> 
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6830522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档