Ala*_*laa 1 php mysql truncate
我有php脚本在mysql DB中插入文章.mysql中的字段类型是文本.
现在,当我插入一个大于32K的文章时,它只被截断为32K.我所知道的是mysql中文本的最大大小是64K.
PS.:mysql版本是5.0.51a-24 + lenny5
PHP版本是:PHP 5.3.2-1ubuntu4.9
mysql:max_allowed_packet = 16M
任何想法为什么mysql截断它或如何解决它?
**编辑**
我的字符集是utf8,
通过选择该字段的十六进制我得到65768,并且如您所知,每两个十六进制数字代表一个字节,因此这里的实际大小是65768/2 = 32884
mysql> select length(hex(body)), length(body) from articles where article_id=62727; +-------------------+--------------+ | length(hex(body)) | length(body) | +-------------------+--------------+ | 65768 | 32884 | +-------------------+--------------+
谢谢你的帮助
TEXT类型的长度为64k字节而不是字符,因此如果使用每个字符使用多个字节的字符集,则可能会发生此错误.
在你的情况下,字符串总是被截断为32k,看起来你正在使用UTF-16字符集,每个字符需要两个字节.
你有两种可能性: