解决Docker容器中无法修改MySQL大小写敏感问题
MySQL大小写敏感的另类解决方案项目测试环境的数据库出现大小写敏感的问题,但之前图省事,使用docker方式运行,配置文件没有外置,现在怎么办?参数mysql是通过lower_case_table_names参数来控制大小写敏感的,该参数在[mysqld]结点下。关于lower_case_table_names参数对表名称或数据库名称大小写敏感的控制。Unix下默认为0,也就...
MySQL大小写敏感的另类解决方案
项目测试环境的数据库出现大小写敏感的问题,但之前图省事,使用docker方式运行,配置文件没有外置,现在怎么办?
参数
mysql是通过lower_case_table_names参数来控制大小写敏感的,该参数在[mysqld]结点下。
- 关于lower_case_table_names参数对表名称或数据库名称大小写敏感的控制。
- Unix下默认为0,也就是大小写敏感的;Windows下默认为1,不敏感;macOS默认为2,存储区分大小写,但是在查询时会转换为小写。
- 对于在大小写不敏感的系统(Windows和macOS)不能将该字段设置为0
排查
先确定一下数据库
show variables like 'lower%'
显示 lower_case_table_names 0
备注
其中 0:区分大小写,1:不区分大小写
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、 变量名也是严格区分大小写的;
修改
那就尝试直接在docker里修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
提示未安装vim
换最基础的vi
vi /etc/mysql/mysql.conf.d/mysqld.cnf
还是提示未安装vi
那就自己安装vim
yum install vim
yum 也没有
。。。。。这个mysql的centos容器应该是一个最小化的环境
mysql的配置没法修改了,难道要把表导出再新配置一个mysql,想想其他的办法,
复制一个vim 安装包进去,或者更直接把mysqld.cnf复制出来修改再覆盖回去试试
备注
从容器里面拷文件到宿主机
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /home
从宿主机拷文件到容器里面
docker cp /home/mysqld.cnf mysql:/etc/mysql/mysql.conf.d/
验证
修改完重启数据库再次验证
show variables like 'lower%'
显示 lower_case_table_names 1
删除之前异常的表,问题解决
更多推荐
所有评论(0)