首页 > mysql 字段 varchar(2)无法插入‘这里是’这个值

mysql 字段 varchar(2)无法插入‘这里是’这个值

CREATE TABLE `b` (
`id` int(1) default NULL,
`name` varchar(10) default NULL
ENGINE=MyISAM DEFAULT CHARSET=utf8 

提示一个警告,查询的时候name字段为空

mysql> insert into b values(1010,'这说明我爱你');
Query OK, 1 row affected, 1 warning (0.00 sec)

如果换条语句,插入成功,name字段显示出一个‘十’

mysql> insert into b values(1010,'十年之前我不认识你,你不是认识');
Query OK, 1 row affected, 1 warning (0.00 sec)

有点搞不懂为什么


基本确定是你因为你字符集的问题。
你数据库使用的是utf8,但是你命令行客户端使用默认的,可能是gbk或gb2312之类的。你在连接命令行客户端时候加上字符集设置,应该就没有问题。

mysql -h DB_HOST -u DB_USERNAME -p  --default-character-set=utf8

1.首先出现warning是由于你输入的字符长度超出了设定的长度-----10,注意一个中文字符是占用了两个字节的,输入“这说明我爱你”就已经超出了。
2.只能显示出一个‘十’,可能是数据库的乱码问题,我也不是很清楚,因为我的显示是正常的。。只不过超出了的部分被截取了


mysql 的 char varchar text 的长度计算都是以字符数的, 比如,utf-8 编码的 varchar(8) 可以存储 8 个中文字符,占用 24 个字节(长度字节不算)。

但是 varchar 类型最多只能放 65535 个字节,所以 utf-8 编码的 varchar 最大只能设置为 21,844


终于找到原因了,感谢大家的耐心解答。原来是cmd命令下的问题。相同的语句如果调用php 的sql插入,就没问题。说明不是varchar类型的错误。

【热门文章】
【热门文章】