Mysql 为什么rails将文本列构造为65535个字符?

Mysql 为什么rails将文本列构造为65535个字符?,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,我正在使用RubyonRails将一封原始电子邮件保存在MySQL的文本列中。它不断被截断到65535个字符,有人知道这是什么原因吗 MySQL正在使用max\u allowed\u packet=64M运行 使用InnoDB作为存储引擎。65535是一个“神奇数字”——它是2^16-1。这正是MySQL中文本列的最大限制。它被截断为该长度,因为。。。嗯 如果你想存储更多的内容,你需要MEDIUMTEXT或LONGTEXT。RubyonRails没有截断,MySQL截断了 文本类型被限制为2^1

我正在使用RubyonRails将一封原始电子邮件保存在MySQL的文本列中。它不断被截断到65535个字符,有人知道这是什么原因吗

MySQL正在使用
max\u allowed\u packet=64M运行


使用InnoDB作为存储引擎。

65535是一个“神奇数字”——它是2^16-1。这正是MySQL中文本列的最大限制。

它被截断为该长度,因为。。。嗯


如果你想存储更多的内容,你需要MEDIUMTEXT或LONGTEXT。

RubyonRails没有截断,MySQL截断了


文本类型被限制为
2^16-1=65535
个字符。

我不是Ruby专家,但65535这个数字引起了我的注意——它是16位(减去1,这通常是特殊的)。您可能遇到了一堵墙,墙的大小与您使用的字体相同。

您能引用一下您在该页上读到的内容吗?我看不出它在哪里给出了这一限制……在“MyISAM中字符串类型的存储要求”下,有一个表说明BLOB和文本需要L+2字节的存储空间,其中L“表示给定字符串值的实际长度(以字节为单位)”,根据该表,小于2^16(65536)。因此,你不能储存更多。MEDIUMTEXT将为您提供16777215字节的存储空间,而LONGTEXT仅提供43亿字节的存储空间。请注意,尽管它说的是MyISAM,但同样适用于InnoDB,因为就BLOB/TEXT存储限制而言,这两个存储引擎没有任何区别。我将字符串截断为27700个字符。我猜这是因为我用的是UTF-8。即使使用LONGTEXT(我已经检查了DB,这就是类型),它仍然会被截断。有什么好主意吗?@Ponny:如果LONGTEXT不接受你的建议,那么问题似乎就在别处。提出一个新问题并给出细节;那样你会更走运。