mysql中的text数据类型被截断为32k

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_pa​​cket = 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 | 
+-------------------+--------------+

谢谢你的帮助

Dan*_*ina 7

TEXT类型的长度为64k字节而不是字符,因此如果使用每个字符使用多个字节的字符集,则可能会发生此错误.

在你的情况下,字符串总是被截断为32k,看起来你正在使用UTF-16字符集,每个字符需要两个字节.

你有两种可能性:

  1. 使用单字节字符集
  2. 使用更大的列类型