quartz 报错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS‘ doesn‘t exist

30 篇文章 0 订阅
14 篇文章 4 订阅

问题:

spring-boot 整合quartz的时候,连接windows的mysql的时候好好的,然而用linux上的mysql的时候,启动就报了这个错:
Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS’ doesn’t exist
在这里插入图片描述

分析:

首先用windows的mysql是没问题的。
其实linux的mysql也是有这个表的,但由于是从windows复制过去的,所以表名都是小写的,而quartz启动的时候找的是大写,所以认为test.QRTZ_LOCKS这个表不存在。
原理就在于mysql有个配置属性:lower_case_table_names
windows上安装mysql,默认是1,代表忽略大小写
linux上安装mysql,默认是0,代表不忽略大小写
所以在windows好好的,在linux上就报错了。

解决

方法1:最快的解决办法,就是将所有quartz开头的表,都换成大写就好了
方法2:让linux也像windows一样,忽略大小写。

具体就是设置linux上的lower_case_table_names=1,就和windows一样了。步骤如下:

1、先执行sql查看lower_case_table_names,如下图:

show variables like '%lower_case_table_names%';

在这里插入图片描述

2、修改/etc/my.cnf文件,在文件末尾加lower_case_table_names=1,如下图。

3、保存退出,重启mysql即可。用到的命令:

cd /etc
vim my.cnf
末尾加上lower_case_table_names=1  保存退出
service mysqld restart

在这里插入图片描述

4、重启完再看lower_case_table_names的值

在这里插入图片描述
再次启动项目,就成功了

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值