mysql varchar(32) 的字段只能存10个汉字,第11个存不下是什么原因?

10个汉字可以插入,11个汉字就报错:Data too long for column xxx

你的mysql是什么版本的?如果是4以下,就只能存10个汉字。
mysql4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 ;varchar(20)在Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同,具体有以下规则:
1、存储限制
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。
2、编码长度限制
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;
字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。
若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-16
你好啊!
是这样的,这个主要看你系统的字符集;
你知道GBK 和UTF-8 的区别吗?
两者同样是varchar(32)的长度里面能存的汉字数量是不一样的!
这个你可以查查资料!学习一x下。
祝你好运~
第2个回答  2019-03-16
你把表里面的varchar设置下长度不就行了?
默认是255