正在截断MySQL文本列

正在截断MySQL文本列,mysql,Mysql,我有一个MySQL数据库,在其中我将一组文本信息存储到数据库中的一个文本字段中。这些列是 名称:info 类型:文本 排序规则:utf8\U通用\U ci 我让一个用户在字段中插入了约64kb的信息,结果它崩溃了。它将截断最后3个字符。在本例中,这恰好是选项卡的结尾,因此它会将页面上的所有内容都搞糟。如果我手动进入数据库,删除几个字母并添加背面,那么下次我去编辑它时,最后3个字母将再次删除 phpmyadmin表示该字段太长,可能无法编辑。所以我试着在我的cms页面上编辑它,我仍然收到了相同的结

我有一个MySQL数据库,在其中我将一组文本信息存储到数据库中的一个文本字段中。这些列是

名称:info
类型:文本
排序规则:utf8\U通用\U ci

我让一个用户在字段中插入了约64kb的信息,结果它崩溃了。它将截断最后3个字符。在本例中,这恰好是选项卡的结尾,因此它会将页面上的所有内容都搞糟。如果我手动进入数据库,删除几个字母并添加背面,那么下次我去编辑它时,最后3个字母将再次删除

phpmyadmin表示该字段太长,可能无法编辑。所以我试着在我的cms页面上编辑它,我仍然收到了相同的结果


mysql中单个数据库文本列中的这么多数据是否存在已知问题?似乎不应该有。我认为MySQL文本字段的最大大小小于2^16字节。使用UTF-8编码,这可能意味着更少的字符。您可以将MEDIUMTEXT用于2^24字节,或将LONGTEXT用于2^32字节,有关详细信息,请参阅


啊,一定要检查您的大小。

有一个东西叫做,它说数据类型所需的存储是:

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
BLOB,文本L+2字节,其中L<2^16
MEDIUMBLOB,MEDIUMTEXT L+3字节,其中L<2^24
LONGBLOB,LONGTEXT L+4字节,其中L<2^32

注意,2^16==65536

我的理解是文本的最大值为65000字节,大于该值的任何内容都将被截断。这似乎可以解释你的情况。你说你的用户输入的是64kb左右,是不是刚好超过65kb,加上几个(三)字节


考虑使用BLOB。

您必须记住,文本最多有65535个字符。如果您的内容超过64K字节,则可能超出了字段字符的限制。我建议将您的列类型更改为MEDIUMTEXT或LONGTEXT,看看这是否解决了您的问题。

我不知道MySQL中有不同的文本类型。LONGTEXT而不是BigTextThank,SysHex,您当然是对的。我改正了。