问题:

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

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐