mysql 字段 varchar(2)无法插入‘这里是’这个值
迷茫
迷茫 2017-04-17 12:59:51
[MySQL讨论组]
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)

有点搞不懂为什么

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
大家讲道理

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

PHP中文网

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

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

ringa_lee

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

ringa_lee

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

mysql -h DB_HOST -u DB_USERNAME -p  --default-character-set=utf8
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号