为什么rails将TEXT列固定为65535个字符?

我正在使用Ruby on Rails在MySQL的TEXT列中保存原始电子邮件。 它一直被截断为65535个字符,是否有人知道是什么原因引起的?

MySQL使用max_allowed_packet=64M运行

使用InnoDB作为存储引擎。

它会被截断到那个长度,因为……好吧, 那就是适合TEXT列的内容 。

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

MySQL on Rails没有截断,MySQL也没有。

TEXT类型限制为2^16 - 1 = 65535字符, 请参阅文档 。

65535是那些“神奇的数字”之一 – 它是2 ^ 16 – 1.这正是MySQL中TEXT列的最大限制。

我不是Ruby专家,但数字65535引起了我的注意 – 这是16位(减去1,这通常是特殊的)。 您可能正在使用您所使用类型的大小限制的墙。