背景:测试框架时发现因数据大小写不一致导致运行异常,尝试更改mysql的大小写不敏感。
重要的事情说三遍:
此方法仅限于数据库未初始化前!
此方法仅限于数据库未初始化前!
此方法仅限于数据库未初始化前!
如果已有数据怎么办?参见(二)
一、进入容器内进行处理。
1.查看mysql容器
docker ps
C:\Users\flycatony>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b17efb0c0cd5 rabbitmq:management "docker-entrypoint.s…" 8 days ago Up 2 hours 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp mom-rabbitmq
ffcf6c8e1ef7 redis "docker-entrypoint.s…" 8 days ago Up 2 hours 0.0.0.0:6379->6379/tcp redis-mom
5d2978d2469d mysql:latest "docker-entrypoint.s…" 8 days ago Up 2 hours 33060/tcp, 0.0.0.0:63306->3306/tcp mysql8
确定mysql实例的容器ID,如我的ID为 5d2978d2469d
2.进入容器:docker exec -it 容器id bash
docker exec -it 5d2978d2469d bash
3.登录mysql:mysql -u用户名 -p密码
mysql -uroot -proot123
-u和-p接的用户名和密码之间是没有空格的,请根据实际更改成您的用户名和密码。
4.查看大小写配置:show global variables like '%lower_case%';
show global variables like '%lower_case%';
注意以“;”结束。
mysql> show global variables like '%lower_case%'
-> ;
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.00 sec)
这里【lower_case_table_names=0】表示大小写敏感的,需要改为1。
5.进入docker的MySQL容器,编辑/etc/mysql/my.cnf文件(每个系统可能有所不一样)
①退出Mysql,进入docker。
exit
root@5d2978d2469d:/#
注意提示符的变化。之前的是这样
mysql>
②输入vi
vi
root@5d2978d2469d:/# vi
bash: vi: command not found
二、安装vi
①输入apt-get update
apt-get update
注意【apt-get】是一个整体,中间没有空格。
root@5d2978d2469d:/# apt-get update
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [318 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7911 kB]
Get:6 http://repo.mysql.com/apt/debian buster InRelease [22.1 kB]
Get:7 http://repo.mysql.com/apt/debian buster/mysql-8.0 amd64 Packages [8447 B]
Get:8 http://deb.debian.org/debian buster-updates/main amd64 Packages [8796 B]
Fetched 8507 kB in 1min 39s (86.3 kB/s)
Reading package lists... Done
安装完成。
②安装vim:apt-get install vim
apt-get install vim
出现确认提示输入“Y”即可,等待安装完成。
三、在【mysqld】下添加 【lower_case_table_names=1】
①打开文件my.cnf
vim /etc/mysql/my.cnf
②编辑相关内容。
[mysqld]
pid-file =/var/run/mysqld/mysqld.pid
socket =/var/run/mysqld/mysqld.sock
datadir =/var/lib/mysql
secure-file-priv =NULL
lower-case-table-names=1
③保存WQ
vim编辑命令中使用
首先使用esc(键退出)->:(符号输入)->wq(保存退出)
:wq(保存编辑操作退出)
:wq!(保存编辑强制退出
④重新启动Docker容器。
docker restart 5d2978d2469d
四,如果出现docker无法启动怎么办?
此时只是mysql数据库无法启动而已,Docker容器是正常的。可通过以下办法恢复。
①拷贝配置文件至本机。
docker cp 5d2978d2469d:/etc/mysql/my.cnf my.cnf
②恢复配置文件。
把你更改的改了,或重建一个新实例把文件拷贝出来即可。
③再把改好的文件拷贝回去即可。
docker cp my.cnf 5d2978d2469d:/etc/mysql/my.cnf
五、如果以上办法无法解决怎么办?直接新建一个库,把数据重新挂接上即可。详细另写。