1.原因:字符集的原因。比如你要往一个表中添加数据,这个表的字符集是Latin,而当你插入字段的值为中文时就会报该错误。
2.代码展示:(旁边小伙伴遇到的错误)。他在装数据库时没有指定默认字符集为utf-8,默认是latin.在他添加数据时就发生了该错误.
报错代码: insert into from
(ID,name
,price,stock,insert_time)values(91,‘李四’,2332.32,4,‘2020-10-10’).
查看表的结构: show create table 表名;该语句执行后我们看到的结果是:CREATE TABLE from
(
ID
INT(11) DEFAULT NULL,
name
VARCHAR(32) DEFAULT NULL,
price
DOUBLE DEFAULT NULL,
stock
INT(11) DEFAULT NULL,
insert_time
DATE DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=latin1.
我们可以看到默认字符串为latin1,这里我们需要将表的字符集改为utf-8(语句为:ALTER TABLE from
CHARACTER SET utf8; ).这个操作完之后,我们在查看建表语句时发现字段name处多了一个信息:
CREATE TABLE from
(
ID
INT(11) DEFAULT NULL,
name
VARCHAR(32) CHARACTER SET latin1 DEFAULT NULL,
price
DOUBLE DEFAULT NULL,
stock
INT(11) DEFAULT NULL,
insert_time
DATE DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8.发现name字段多了CHARACTER SET latin1这个约束.
其实这就是原因所在.我们传入的name为"李四",可是latin1字符集无法识别,所以就乱码生成了:’\xE6\x9D\x8E\xE5\x9B\x9B.
解决方法:
步骤1: 去mysql安装目录下找到my.ini文件,找到default-character-set的值为utf8. 即default-character-set=utf8;继续找到character-set-server配置,将值设为utf8.即character-set-server=utf8.(在这一步,可能会遇到没有权限修改文件的问题,解决方法见最底部)
步骤2 : 右击此电脑,有个管理选项,点击进入.进入之后界面如下:
找到mysql服务,将其重新启动.
**步骤3:**新建一个库,在新的库里重新创建表即可,就可以看到默认字符集为utf8.此时问题解决.
没权限修改配置文件的问题解决方法:
-
回到my.ini文件的上级目录,并右击,会看到一个"授予访问权限"的菜单项,点击它进入"高级共享",进入到安全模块,再点击编辑.界面如下:
-
点击编辑之后界面如下:
我们会发现有些登录用户是没有修改权限的,这时将"完全控制"选项勾选上就ok了.随意操作,只要保证有修改权限就行.
…我们要善待错误,遇到错误不要烦躁.错误需要解决,一个错误,一分成长.上面解决方案希望对大家有用