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、先執(zhí)行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 restart4、重啟完再看lower_case_table_names的值
再次啟動項目,就成功了
總結
以上是生活随笔為你收集整理的quartz 报错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS‘ doesn‘t exist的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springcloud 创建子父项目_i
- 下一篇: 使用Eclipse进行Makefile项