gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-29 00:04:00 29 4
gpt4 key购买 nike

我正在尝试将长文本(在我的情况下是原始 rss 提要,但也可以是长博客文章或类似内容)存储到 MySql 数据库。

我有一个迁移:

change_column :contents, :description, :longtext

但这给出了一个 schema.rb:

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

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

为什么 Rails 规定一个上限是应该可能的一半?

最佳答案

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

那么正确的做法是:

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

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

编辑:考虑一下,rails 将大小减半是有道理的。重读mysql docs在这个话题上,他们谈到了有效尺寸。我猜当用 2 字节 UTF-8 字符填充时,指定 2147483647 可能会导致有效大小为 4294967295。由于 UTF-8 是 ruby​​ 1.9 中的默认编码(至少在我的机器上),它是唯一正确的方法。我想?!

ruby-1.9.2-p136 :002 > "".encoding
=> #<Encoding:UTF-8>

关于mysql - 如何使用 Rails 将长文本存储到 MySql DB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6830522/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com