解决Docker容器中无法修改MySQL大小写敏感问题
Posted 一路追寻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Docker容器中无法修改MySQL大小写敏感问题相关的知识,希望对你有一定的参考价值。
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
删除之前异常的表,问题解决
以上是关于解决Docker容器中无法修改MySQL大小写敏感问题的主要内容,如果未能解决你的问题,请参考以下文章
linux docker mysql容器 表名大小写敏感失效-有效解决方法
windows下安装Mysql8,表名无法设置成大小写敏感的解决