遇到这个问题的起因嘛,是我用DBeaver执行sql脚本,执行到插入中文的语句时报错,当然这个问题还是蛮好解决的
设置命令参数为
--default-character-set=utf8
就能继续执行了。
如果懒得看废话想快速解决只需要去my.ini下修改,两个参数为utf8然后重启mysql服务,这样新建的库就解决了
[mysqld]
character-set-server = utf8mb4
[client]
default-character-set = utf8mb4
本文完结。
哈哈,开个玩笑,我对这件事也很好奇,为什么DBeaver执行sql脚本没有使用utf8编码呢?
结果一尝试发现,我自己建库建表竟然也插入不了中文?
我进行了建库建表操作
create table try2
(
id int(10) not null
primary key,
name varchar(10) null
);
然后执行如下代码,查看表的创建过程,在最后一行可以看到默认编码是latin1,而我在建表时并没有指定编码方式
show create table try2;
执行代码,查看数据库编码
show variables like “%character%”
可以看到 character_set_database和character_set_server都是latin1。
set_database是创建数据库的默认编码格式,se_server是设置mysql服务器的默认编码格式(其他的有兴趣可以去自行了解)
而我们就把这两位都改为utf8即可
找到你的MySQL的下载目录,找到你的my.ini文件
做两处修改
在你的client和mysqld下分别设置utf8
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
保存后,再重MySQL服务,再查看一遍数据库编码
show variables like 'character%';
可以看到已经变为utf8,注意这里修改之后,新建数据库时会使用utf8m4编码,但是之前的数据库仍然是latin1编码的,所以不要用老数据库再建表尝试了(老数据库的话我也没有尝试怎么修改默认编码,倒是可以建表时设置default charset)