我有一个MySQL数据库,我在其中将一堆文本信息存储到数据库的Text字段中。列是
姓名:信息
输入:文字
整理:utf8_general_ci
我有一个用户在该字段中插入了大约64kb的信息,它吓坏了。它将截断最后3个字符。在这种情况下恰好是选项卡的结尾,因此它会在页面上将其后的所有内容搞砸。如果我手动进入数据库并删除几个字母并添加背面,那么下次我去编辑它时,最后3个将被删除。
phpmyadmin声明该字段很长并且可能无法编辑。所以我试着在我的cms页面上编辑它,我仍然收到相同的结果。
在mysql的单个数据库文本列中是否存在这么多数据的已知问题?它似乎不应该存在。
答案 0 :(得分:14)
我认为MySQL TEXT字段的最大大小小于2 ^ 16字节。使用UTF-8编码,这意味着更少的字符。您可以将MEDIUMTEXT用于2 ^ 24或LONGTEXT用于2 ^ 32字节,有关详细信息,请参阅MySQL-Docs。
啊,请务必检查max_allowed_packet
尺寸。
答案 1 :(得分:5)
你必须记住,TEXT最多有65,535个字符。如果您的内容超过64K字节,则可能超出字段字符的限制。我建议您将列类型更改为MEDIUMTEXT或LONGTEXT,看看是否能解决您的问题。
答案 2 :(得分:0)
我的理解是TEXT的最大值为65,000字节,任何大于该字节的内容都将被截断。这似乎可以解释你的情况。你说你的用户输入大约64kb,可能只是超过65kb,只有几(3)个字节?
考虑使用BLOB。
答案 3 :(得分:-2)
有一个名为documentation的东西,说数据类型所需的存储空间是:
BLOB, TEXT L + 2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32
注意,2 ^ 16 == 65536