FAQ:ERROR 1366 (HY000)的utf8中文乱码问题

异常描述

在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%’;查看到以下信息,表示修改成功,以后再也不会有中文乱码的问题了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值