解决Docker容器中无法修改MySQL大小写敏感问题

Posted 一路追寻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Docker容器中无法修改MySQL大小写敏感问题相关的知识,希望对你有一定的参考价值。

mysql大小写敏感的另类解决方案

项目测试环境的数据库出现大小写敏感的问题,但之前图省事,使用docker方式运行,配置文件没有外置,现在怎么办?

参数

mysql是通过lower_case_table_names参数来控制大小写敏感的,该参数在[mysqld]结点下。

  1. 关于lower_case_table_names参数对表名称或数据库名称大小写敏感的控制。
  2. Unix下默认为0,也就是大小写敏感的;Windows下默认为1,不敏感;macOS默认为2,存储区分大小写,但是在查询时会转换为小写。
  3. 对于在大小写不敏感的系统(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,表名无法设置成大小写敏感的解决

linux 下 设置 MySQL8 表名大小写不敏感方法,解决设置后无法启动 MySQL 服务的问题

如何解决docker宿主机无法访问容器中的服务

MySQL查询时大小写不敏感问题(无需修改配置文件)

docker下MySQL修改配置