在MySQL执行
insert into
为字段添加值时,出现报错'\xE6\x96\xB0\xE9\x97\xBB...' for column 'title' at row1
这是因为character_set_server 的编码格式不是utf8
解决办法:
一般MySQL的配置文件路径都在这个下面,如果找不到可以执行下面的命令查找自己的路径。
找到此路径C:\ProgramData\MySQL\MySQL Server 5.7
或者在MySQL中执行这条命令
select @@datadir; # 查看mysql 的配置文件
C:\ProgramData\MySQL\MySQL Server 5.7\Data\
1,需要将隐藏项目打开
2,点击my.ini配置文件 用记事本打开或者notepad++
这里可以添加成utf8mb4,也可以添加成utf8
utf8mb4 是目前最大的一个字符编码,支持任意文字。 utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8字符。所以这里推荐为utf8mb4
修改后保存退出,用
管理员方式
打开cmd窗口,重新启动MySQL,使配置生效。
如果是MySQL8版本
的输入mysql80
,即可
C:\WINDOWS\system32> net stop mysql57
MySQL57 服务正在停止..
MySQL57 服务已成功停止。
C:\WINDOWS\system32> net start mysql57
MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。
重启成功后查看mysql编码
show variables like 'character%'; #查看编码
可以看到已经变成utf8mb4,至此再次插入中文值,成功。
因为之前创建的数据库和表并没有改变,所以需要重新创建一个新的数据库和表
drop database a; #删除数据库 a
create database a; # 创建数据库 a
use a; #使用该数据库
create table emp
(
id int comment '编号' ,
workno varchar(10) comment '工号',
name varchar(10) comment '名字',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
workaddress varchar(50) comment '工作地址',
entrydate date comment '入职时间'
)comment '员工表';
insert into emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
values (1, '1','柳岩','女',20,'123456789012345678','北京','2001-01-01'),
(2, '2','张无忌','男',18, '123456789012345670', '北京', '2005-09-01'),
(3,'3','韦一笑','男',38, '123456789712345670','上海','2005-08-01'),
(4, '4','赵敏','女',18,'123456757123845670','北京','2009-12-01');
select * from emp; #查看表
插入成功