原因是, character_set_server 变量不是utf-8编码,编码配置不生效!
于是配置 /etc/mysql/mysql.conf.d/ 目录下的mysqld.cnf 文件
检查发现,也配置了加载 /etc/mysql/mysql.conf.d/ 目录,配置就是不生效,让我开始怀疑人生!
搞了老半天,各种百度还不能解决。。。于是决定查看一下 /etc/mysql 目录下还有哪些配置文件
发现在conf.d文件夹下还有个 mysql.cnf 配置文件
于是决定尝试把配置加在这个文件里,添加以下两个配置项
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
配置好之后,重启mysql : docker restart mysql5.7
再查看数据库,竟然发现生效了!character_set_server 变量奇迹般改成utf-8了!!!
在后台页面插入一条数据,发现已经不是乱码了
于是我产生了一个疑惑:为什么 /etc/mysql/mysql.conf.d/ 目录下的文件在linux系统的docker中生效而在windowns 的docker中却不生效呢?
经过回想,我怀疑 /etc/mysql/mysql.conf.d/mysqld.cnf 文件是我自己在windows 对应的映射文件夹下手动创建的,所以不生效。这个配置文件应该要在要在容器中创建才会生效。后来我把已生效的配置注释掉,在容器中的/etc/mysql/mysql.conf.d/ 目录下创建了 mysqld.cnf 文件,添加上配置,生效了。这也证实了我的怀疑是没有错的!
总结:坑都是自己埋的!!!