Mysql 字符集utf8mb4设置无效

心急如焚 发布于 2018/08/13 21:26
阅读 1K+
收藏 0

背景:由于要解决java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1异常,所以要修改mysql字符集,改为utf8mb4。

修改字符集参考文章如下(参考修改后都没有效果):

https://www.jb51.net/article/144079.htm

https://blog.csdn.net/u014034329/article/details/80969246

mysql信息:

version:5.7.22免安装版

路径:D:\Work_Program_Files\mysql

my.ini文件信息:

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
init_connect='set names utf8mb4'
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

mysql已经配置成windows服务,并且启动成功。但是通过navicatformysql登录mysql,通过show VARIABLES like 'char%'; 命令查询出结果为如下:

变量character_set_client、character_set_connection、character_set_results、character_set_system没有改为utf8mb4

问题:如何修改mysql字符集,保证character_set_client、character_set_connection、character_set_results、character_set_system变量的字符集为utf8mb4

加载中
0
心急如焚

没人愿意回答嘛?

0
暴猿
暴猿

你建数据库的时候直接把字符集建成utf8mb4  然后name字段的字符集也设置成utf8mb4应该就可以解决这个问题的

心急如焚
谢谢回答! 再请教下,character_set_database和character_set_server已经是utf8mb4,应该是建库的时候设置的, 而character_set_client、character_set_connection、character_set_results、character_set_system这四个 参数是哪里设置的呢?
0
OSC首席键客
OSC首席键客

其实不用设置这么多参数。

只需要这样设置就可以了:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4

然后你还要把现有数据库转换成utf8mb4。

0
流风回雪pj
流风回雪pj

试一下重启数据库,看下能不能解决

0
x
xiaobu1994

我遇到了和你一样的情况。。。。你后面是怎么解决的。虽然插入表情的问题解决了,但是我还是想问下为啥character_set_client、character_set_connection、character_set_results、character_set_system变量的字符集为utf8mb4不生效。

心急如焚
很遗憾,没有解决mysql数据库utf8mb4编码设置问题
0
红白机
红白机

最后怎么解决的?我的今天也突然变成这样了,怎么改都不起效果。

红白机
红白机
回复 @心急如焚 : 我的已经解决,其实设置是对的。但是Navicat默认使用的是utf-8编码。而且还改不了。当时使用的是Navicat 10这个版本,最后换了一个Navicat 12 就正常了。在>mysql命令行下进行查询实际上已经全是utf8mb4编码。证明设置已经成功。
心急如焚
很遗憾,没有解决mysql数据库utf8mb4编码设置问题,不过生僻字问题有解决
返回顶部
顶部