博主今天开始写自己的个人网站的api接口时,遭遇MySQL数据库乱码问题,以前用的是Windows系统,现在改用Mac,所以花费了不少时间,这里仅对修改进行了一些记录
1、Spring Boot项目是否全部用UTF-8
通过输出可知,Spring Boot 已经默认为UTF-8
2、链接数据库是否指定了编码
以下是配置文件
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/myweb?useUnicode=true&characterEncoding=UTF-8
通过配置文件可知,没有问题
3、MySQL建库,建表是否制定了编码
为了解决这个问题,我用了2个数据了工具DataGrip和Navicat,得出的结论是,也没有问题
4、那是什么问题呢?
通过大量搜索,通过
show variables like '%char%';
OR
show variables like 'character%';
可以查看到一些编码问题
5、问题找到了,怎么修改呢
网上有我很多资料,大多数说
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
意思是说,把my-medium.cnf拷贝一份,重命名为my.cnf
可是我的MySQL是最新的版本,并没有my-medium.cnf
6、怎么办呢
继续搜索,之后的解决方案是,自己创建一个my.cnf
7、填哪些内容呢?
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
由于博主是Mac,这里权限是个问题,后面还会说
8、修改完之后,重启一下MySQL,再来测试运行一下,程序,发现还是不行,但此时终端会有一个小提示:
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.
大意是说,/etc/my.cnf被忽略
9、什么意思?
搜索一下,大概知道了,Mac如果是全局的话,为了安全,被忽略
10、怎么办?
将/etc/my.cnf的权限更改为644,即可。
重启MySQL,再次测试,发现不乱码了!