异常描述
在mysql中当创建的数据库表中有字段类型为char时,当插入数据为中文时,出现了以下以下异常情况:
输入代码如下:
create table test4(id int(11),name char(10),dtae datetime,singin tinyint(4));
insert into test4 values(2,'张三','2020-11-18 15:00:00',4);
异常原因
出错原因:检查数据库此字段的字符集与整理字符集是否与SQL语句传递数据的字符集相同;不相同则会引发MySQL1366错误
检查代码如下:
show variables like '%char%';
发现以下数据类型不是utf8。
解决办法
1.修改字段的编码格式
当仅需要修改表中某一个字段的编码格式为utf8时,代码如下:
alter table 表名 modify 字段名 字段char类型 character set utf8;
如何查看一张表的字段详情如下:
show full columns from 表名;
2.修改表的编码格式
在创建一个新的数据库表时,设置其编码格式为utf8,这样在该表中的所有char字段编码格式均为utf8,不会出现中文乱码的问题
创建数据库表的代码后加上default charset=utf8如下:
mysql> create table 表名称(字段 字段类型1,字段2, 类型2...)default charset=utf8;
3.修改数据库的编码格式
在创建一个新的数据库时直接指定其编码格式为:utf8,这样在该数据库中所新建的表中的char字段均不会出现中文乱码的问题。
创建数据库的代码如下:
create database 数据库名 character set utf8;
4.修改整个mysql的编码格式
1.在mysql的安装目录下查找my.ini文件,该文件是隐藏的,需要进行搜索查找,我的mysql是安装在C盘目录下的,所以在C盘目录进行搜索my.ini文件,找到该文件的目录,如下:
2.找到my.ini文件后使用notepad++打开(不能用txt修改保存,因为其不是utf8编码格式,无法进行修改),并修改以下内容:
1.在[client]中新增如下代码:
default-character-set=utf8
2.在[mysqld]中新增如下代码:
character-set-server=utf8
3.修改完成后保存
4.关闭mysql服务器,并重新启动,方法如下:
计算机——》右键——》管理——》服务器与应用——》服务——》找到MYSQL——右键——》停止——》停止成功后,再右键重新启动
5.重新启动MYSQL服务器后,进入mysql,输入以下命令:
show variables like ‘%char%’;查看到以下信息,表示修改成功,以后再也不会有中文乱码的问题了