1、原因描述
因项目启动提示: ‘xxxx.QRTZ_LOCKS’ doesn’t exist,导致报错的原因:mysql数据库对大小写敏感导致。
mysql版本:8.0.25
2、解决问题
2.1.连接Mysql并进入mysql命令行
mysql -u root -p
# Enter password:
2.2 执行show global variables like '%lower_case%';
mysql> show global variables like '%lower_case%';+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | ON |
| lower_case_table_names | 0 |
+------------------------+-------+
注意:命名行结束后必须有";"。
说明:
lower_case_file_system
表示当前系统文件是否大小写敏感,只读参数,无法修改。
ON:表示当前系统对大小写不敏感
OFF:表示当前系统对大小写敏感
lower_case_table_names
表示创建的数据表名,是否区分大小写
lower_case_table_names = 1 :表示不区分大小写
lower_case_table_names = 0 :表示区分大小写
2.3、修改mysql容器中my.conf文件
2.3.1、开始连接mysql容器
docker exec -it [容器id] /bin/bash
2.3.2、修改my.conf文件
vi /etc/mysql/my.cnf在[mysqld]下添加如下[mysqld]
lower_case_table_names=1
退出保存: :wq
2.3.2、重启容器
docker restart [容器id]
能启动,但随后mysql8.0的容器状态就显示为Restarting。
反复尝试均不能正常启动,mysql的服务不可用。
2.3.3、还原mysql配置
此时,mysql的容器未启动,不能通 docker exec -it [容器id] /bin/bash 方式进入容器。
思路:把docker容器中的配置文件复制到主机中,然后在主机中修改,修改完成后再复制到docker容器中 1. 复制docker容器的文件到主机中。
1、修改my.conf
举例: docker cp [容器id]:docker容器中配置文件路径 主机路径
docker cp [容器id]:/etc/mysql/my.cnf /home/my.cnf
在[mysqld]下把添加的lower_case_table_names=1 删除,或注销
[mysqld]
# lower_case_table_names=1
2、替换my.conf
把修改的配置文件再复制到docker容器中
举例:docker cp 主机文件路径 容器id:docker容器中配置文件路径
docker cp /home/my.cnf 容器id:/etc/mysql/my.cnf
3、重启容器成功
docker restart [容器id]
mysql8.0.25 能正常启动。
但是mysql数据库对大小写敏感的问题,还未解决。
2.3.4、更换数据库
docker中选择一个mysql5.7版本,再次执行以下操作:
1、开始连接mysql容器
docker exec -it [容器id] /bin/bash
2、修改my.conf文件
vi /etc/mysql/my.cnf在[mysqld]下添加如下[mysqld]
lower_case_table_names=1
退出保存: :wq
3、重启容器
docker restart [容器id]
重启mysql5.7容器,成功。
4、再次执行show global variables like '%lower_case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
5、把数据库从mysql8.0中导入至mysql5.7,
更改项目mysql配置,再次测试, 因项目启动提示: ‘xxxx.QRTZ_LOCKS’ doesn’t exist 消失,项目启动成功。