ERROR 1366 (HY000): Incorrect string value......(Mysql报错解决)

2019.11.29更新:发现了新的解决方法



错误描述

在控制台执行插入操作的时候,Mysql报错ERROR 1366 (HY000): Incorrect string value……插入操作失败,如下图所示
在这里插入图片描述
报错原因:
因为插入的数据中包含中文字符,而现在的mysql的字符集无法表示中文字符,所以才会有上述的错误。

问题解决

既然在mysql的控制台无法插入,就尝试在Navicat执行插入的代码,如下图:
在这里插入图片描述
在Navicat打开数据表一看,发现居然插入成功了(似乎问题已经解决了)
在这里插入图片描述
但是,在MySQL的控制台执行查询操作,发现所有的中文都显示为乱码。
在这里插入图片描述
于是,我们执行set name gbk;命令,可以看到现在乱码问题已经解决了。关于这个命令,我发现有个大佬写得很详细,这里不加赘述:mysql set names 命令和 mysql 字符编码问题
在这里插入图片描述
新的解决方案:
在一开始先执行set name gbk;命令,再执行数据插入操作就不会出现保存了。不同的MySQL版本之间可能会有差异,我的MySQL版本是5.6。

补充

在查找资料的时候,发现了一些有用的命令,记录一下:

  • 查看各级的字符集编码
show variables like 'character%';
  • 修改数据库的字符编码
# 修改数据库enterprises的字符集:
alter database enterprises character set utf8
  • 修改数据表的字符编码
# 修改数据表employees的字符集:
alter table employees character set utf8
  • 修改数据表字段的字符编码
# 修改字段的字符集
alter table employees change name name char(10) character set utf-8;


解决方法有点非正统,但也算是解决了我的问题,如果下次遇到其他情况在进行补充。
发布了59 篇原创文章 · 获赞 103 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42292229/article/details/101100533
今日推荐