最近遇到一个问题:执行mysql查询脚本的时候,区分了大小写。为了解决这个问题,我们修改了msyql的配置文件,添加新配置lower_case_table_names=1。这个配置项的作用是取消数据库查询的大小区分。重启了mysql的docker容器,查询的时候还是区分大小写,参数没有起作用。
开始一度怀疑是配置文件映射的不对。排查思路是:
查看创建mysql容器的脚本,找到配置文件的映射路径,然后检查容器外和容器里的配置是否一致。具体过程是:
获取到创建脚本,找到容器的映射路径,容器外的配置文件配置没有问题。检查容器里的配置:
dockerps显示docker容器列表,目的是获取到mysqldocker的容器id
dockerexec-it容器id/bin/bash
cd/etc/mysql查看mysql容器里的默认配置文件路径
catmysql.sql查看mysql配置文件
默认配置文件下又指定了两个配置文件的路径,分别是:
!includedir/etc/mysql/conf.d/
!includedir/etc/mysql/mysql.conf.d/
我们在创建容器的时候映射的路径是:
/home/env/mysql/config:/etc/mysql/mysql.conf.d这个映射路径是对的。
既然配置文件是正确的,为什么重启还不生效呢?稍后说,先说如何解决。
既然参数不生效,那就只有一个办法,在创建容器的脚本中,添加参数项。命令是:
执行命令,重新创建容器,问题解决。
修改配置文件为什么不生效的问题,刚好有个同事研究过这个问题。
结论是:在centos(x86)下的docker容器里的mysql的配置文件指定的路径!includedir/etc/mysql/mysql.conf.d/下的mysql.conf的参数是不生效的;但!includedir/etc/mysql/conf.d/这个路径下是生效的,所以创建docker容器的时候,要把路径映射到!includedir/etc/mysql/conf.d/这个路径下。在arm架构下,生效的文件是!includedir/etc/mysql/mysql.conf.d/。具体为什么会出现这种情况,就不知道了,等以后有机会查下。
感谢大家的阅读,我是星光依旧灿烂,欢迎点赞