背景:由于要解决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
没人愿意回答嘛?
######你建数据库的时候直接把字符集建成utf8mb4 然后name字段的字符集也设置成utf8mb4应该就可以解决这个问题的
######谢谢回答! 再请教下,character_set_database和character_set_server已经是utf8mb4,应该是建库的时候设置的, 而character_set_client、character_set_connection、character_set_results、character_set_system这四个 参数是哪里设置的呢?######其实不用设置这么多参数。
只需要这样设置就可以了:
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4
然后你还要把现有数据库转换成utf8mb4。
######试一下重启数据库,看下能不能解决
######我遇到了和你一样的情况。。。。你后面是怎么解决的。虽然插入表情的问题解决了,但是我还是想问下为啥character_set_client、character_set_connection、character_set_results、character_set_system变量的字符集为utf8mb4不生效。
######很遗憾,没有解决mysql数据库utf8mb4编码设置问题######最后怎么解决的?我的今天也突然变成这样了,怎么改都不起效果。
######回复 @心急如焚 : 我的已经解决,其实设置是对的。但是Navicat默认使用的是utf-8编码。而且还改不了。当时使用的是Navicat 10这个版本,最后换了一个Navicat 12 就正常了。在>mysql命令行下进行查询实际上已经全是utf8mb4编码。证明设置已经成功。######很遗憾,没有解决mysql数据库utf8mb4编码设置问题,不过生僻字问题有解决版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。