Mac下MySQL中文乱码问题解决
程序员文章站
2022-03-19 22:06:56
...
作为一个一专多能的ScrumMaster,编码的基本技能还是需要的,最近因为换了个电脑,装软件的过程真的快折腾的我不行了,这不,今天又遇了Mac本地安装的MySQL写入中文时乱码的问题。经过又一番折腾,终于搞好了。
1. 进入MySQL命令行
本地数据库:
mysql -u root -p
其中root是你要登录的MySQL账号,回车后输入密码;也可以p后不加空格,直接加密码,回车就登录了。
远程数据库:
mysql -hxx.xx.xx.xx -u root -pxxx
其中-h是你要登录的远程MySQL服务器的IP地址。
2. 查看数据库编码
终端依次
输入:
show databases; #显示MySQL有多少个数据库实例
use XXX; #选择出问题的数据库实例
show variables like 'character_set_%'; #查看编码
就可以看到数据库的编码信息了:
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+-----------------------------------------------------------+
这时发现character_set_server的编码格式是latin1
,而其他格式都是utf8
,问题也就出在这里。
3.修改数据库编码
一开始我是在命令行直接修改的编码格式:
SET character_set_server='utf8';
修改之后再次执行命令:
show variables like 'character_set_%';
发现数据库的编码格式已修改:
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+-----------------------------------------------------------+
但是我再次执行数据库的操作,发现插入中文时还是乱码,即使重启了数据库服务也还是不行。
最后搜索到一种方法,终于解决了我的问题,方法如下:
cd /etc
sudo su
vim my.cnf
在打开的my.cnf文件中添加以下数据:
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
编辑完以后,按esc退出编辑,然后输入:wq!
保存退出。
重启数据库服务,问题解决。
如果重启以后还是不行,你可以重新创建数据库和表再试下。