- 具体错误
ClusterManager: Error managing cluster: Failure obtaining db row lock: Table 'db_jeelowcode.QRTZ_LOCKS' doesn't exist
org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Table 'db_jeelowcode.QRTZ_LOCKS' doesn't exist
at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:184)
at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:113)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.doCheckin(JobStoreSupport.java:3335)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3935)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:3972)
Caused by: java.sql.SQLSyntaxErrorException: Table 'db_jeelowcode.QRTZ_LOCKS' doesn't exist
- 解决办法1(无效)
编辑/etc/mysql/mysql.conf.d/mysqld.cnf,加入:
lower_case_table_names = 1
按理来说,这个应该是有效的。结果是重启mysql时直接报错,去掉就正常。我也不知道哪里出了问题。
- 解决办法2(无效)
# 登录数据库
$ sudo mysql -uroot -p123456
# 察看表
SHOW TABLES LIKE 'qrtz_locks';
# 授权
GRANT SELECT, INSERT, UPDATE, DELETE ON db_jeelowcode.qrtz_locks TO 'root'@'localhost';
- 解决办法3(有效)
直接改名!
RENAME TABLE qrtz_locks to QRTZ_LOCKS;
RENAME TABLE qrtz_scheduler_state to QRTZ_SCHEDULER_STATE;
RENAME TABLE qrtz_triggers to QRTZ_TRIGGERS;
RENAME TABLE qrtz_fired_triggers to QRTZ_FIRED_TRIGGERS;
RENAME TABLE qrtz_cron_triggers to QRTZ_CRON_TRIGGERS;
RENAME TABLE qrtz_paused_trigger_grps to QRTZ_PAUSED_TRIGGER_GRPS;
RENAME TABLE qrtz_job_details to QRTZ_JOB_DETAILS;