欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2024/7/23 编程问答 78 豆豆
生活随笔 收集整理的这篇文章主要介绍了 quartz 报错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS‘ doesn‘t exist 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题:

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的值


再次启动项目,就成功了

总结

以上是生活随笔为你收集整理的quartz 报错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS‘ doesn‘t exist的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。