MySql8的数据库导入MySql7.5乱码解决
最近在做项目时,需要把MySql8的数据库导入MySql7.5,导入过程非常顺利。可是在vs2015开发过程中,写数据库却出现乱码。
在网上找解决方案,说是MySql8默认支持utf8mb4编码,而MySql7.5不支持这个编码。我看了一下数据库属性,这就是瞎扯。又仔细检查了MySql8导出的Sql文件,发现编码是utf8,而非网上说的utf8mb4编码。说明不是这个原因导致的。
于是我又不辞辛劳,重建一个数据库,逐条执行Sql命令,重建表,还是不能解决问题。
后来在一篇博文中看到查看mysql编码规则的命令show variables like '%char%',于是执行一下,结果如下图:

结果,发现红框中的character_set_server编码不是utf8,而是另外一个,具体是啥我记不清楚了。这就是问题的根源了。
找到问题根源,就要解决它。需要找到mysql5.7的配置文件位置。由于当时安装的时候采用的是windows的图形界面安装mysql5.7,一时间没找到配置文件错误。为了避免大家踩坑,我就直接把找配置文件位置的方法给大家。
这里有些有用的命令,都列举出来,供大家参考:
1、MYSQL安装⽬录
select @@basedir;

红框中显示的就是你电脑上MySql5.7的安装位置了;
2、MYSQL数据⽂件⽬录:这个命令找到数据库文件位置,配置文件就在数据库文件目录的上级目录中了:
select @@datadir;

这就是默认的数据库文件的路径了。由于这个是程序数据文件,因此默认是隐藏的,你需要通过文件夹的查看选项来修改一下设置。

然后就能找到这个文件夹位置。

找到了配置文件,别用写字板之类的文件打开,要用vscode,或者直接在vs2015中打开它,否则保存的时候由于编码问题会导致mysql启动失败,所以你在修改它之前,还是先备份一个这样最保险。
修改配置文件前,你需要先停止mysql5.7的服务,这个就不赘述了。
下图是配置客户端的,添加上default-charter-set=utf8

在[mysql]和[mysqld]下都增加上这个配置项。然后再启动mysql5.7服务。再回到vs2015,写数据库不再出现乱码。
顺便提一下,你可以同时把数据库文件位置修改到其它盘下,这样是为了数据安全。
# Path to the database root
datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data
就是这个了。
完美解决问题。踩坑不少,总结一下,以便各位朋友少踩坑。