MySQL 插入中文报错(即MySQl ERROR 1366: 1366: Incorrect string value: 错误原因)
在使用MySQL插入中文字符时,出现报错
ERROR 1366: 1366: Incorrect string value: '\xE6\x87\x82' for column 'username' at row 1
1
分析:
这里报错的原因是你要插入的一个中文字段报错
所以这里是你的字段编码方式与你的 传递的字符集 编码方式不匹配
这里中文字符一般用utf8 或 gbk
查看表中每个字段的编码方式
show full columns from 表名;
1
这里会发现我们想插入的字段username 是latin1 编码,非utf8 和 gbk
所以这里我们只需通过
更改字段编码方式
alter table 表名 change 字段名 字段名 字段数据类型 character set 字符编码方式;
1
这里建议字符编码方式都改为utf8,因为utf8 兼容性在很多平台上会更好。
所以在这里是
alter table user change username username varchar(16) character set utf8;
1
更改后再用上述方式查询:
发现username 字段编码变为 utf8
就可以解决这个问题了
也就你想哪个字段插入中文字符就查看一下他的字符编码是不是latin1
如果是,就把它改为utf8 或者 gbk
原因:
是在创建数据库是没有指定数据库的编码模式,所以默认的编码方式为latin1。
查看指定数据库的编码方式
show create database 数据库名;
1
查询后会出现:
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */
1
这里会发现 character set 为 latin1
更改数据库编码方式
alter database 库名 charset = 编码方式;
1
查看指定表的编码方式
show create table 表名;
1
查询后会出现
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(16) DEFAULT NULL,
`password` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1
2
3
4
5
6
这里也会发现 charset 为 latin1
更改表的编码方式
alter table 表名 charset = 编码方式;
1
注: 通过这个方式改变表的编码方式只能决定这个再次增加加字段时的字段编码方式,而无法影响已经建好的字段。
所以这个时候再次查询表的编码方式时:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(16) CHARACTER SET latin1 DEFAULT NULL,
`password` varchar(16) CHARACTER SET latin1 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
1
2
3
4
5
6
可以看到表的编码方式变为了utf8
而username , password 字段后则加上了 latin1
说明这两个更改前已经建好的字符字段只更改表的编码方式影响不了它们;
注: 当字段的编码方式与表的编码方式相同时,不会显示该字段的编码方式。
所以最终都是要通过
alter table 表名 change 字段名 字段名 字段数据类型 character set 字符编码方式;
1
来更改字段的编码方式
建议:在创建数据库以及创建表的时候后面都加上charset - utf8 就不会出现这种中文字符产生的问题了;
————————————————
版权声明:本文为CSDN博主「Mr.路痴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43054397/article/details/90906630
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现