配置好数据源dataSource后,需要在Quartz的QRTZ_LOCKS表中插入以下数据: INSERT INTO QRTZ_LOCKS values(‘TRIGGER_ACCESS’);...INSERT INTO QRTZ_LOCKS values(‘JOB_ACCESS’); 否则会报 org.springframework.beans.factory.BeanCreationException...: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: No row exists in table QRTZ_LOCKS...for lock named: TRIGGER_ACCESS [See nested exception: java.sql.SQLException: No row exists in table QRTZ_LOCKS
而我们此处配置的,并不是查询时忽略表名大小写,而是全部以小写表名去查询 因此配置了lower_case_table_names = 1后,大写表名用大写sql一律作废匹配不到 SELECT * FROM QRTZ_LOCKS...查询表名为大写QRTZ_LOCKS的表找不到 但由于我windows开发环境下的表名又为小写qrtz_locks 此时就有以下方案: 配置改回lower_case_table_names = 0或者移除掉该配置...| | ALTER TABLE QRTZ_JOB_DETAILS RENAME qrtz_job_details; | | ALTER TABLE QRTZ_LOCKS...RENAME qrtz_locks; | | ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS RENAME qrtz_paused_trigger_grps...RENAME qrtz_locks; ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS RENAME qrtz_paused_trigger_grps; ALTER TABLE
QRTZ_PAUSED_TRIGGER_GRPS 存储已暂停的Trigger组的信息 QRTZ_SCHEDULER_STATE 存储少量的有关Scheduler的状态信息,和别的Scheduler实例 QRTZ_LOCKS...就是Quartz集群实现同步机制的行锁表,其表结构如下: --QRTZ_LOCKS表结构CREATE TABLE `QRTZ_LOCKS` ( `LOCK_NAME` varchar(40) NOT...NULL, PRIMARY KEY (`LOCK_NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;--QRTZ_LOCKS记录+---------------...//release resources } } }//获取QRTZ_LOCKS行级锁public boolean obtainLock(Connection conn, String lockName...这时,执行查询这个表数据的SQL形如: select * from QRTZ_LOCKS t where t.lock_name='TRIGGER_ACCESS' for update 当一个线程使用上述的
org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:96) 其实一看提示信息就感觉差不多了,QRTZ_LOCKS...是大写,但是数据库中是小写qrtz_locks。
QRTZ_PAUSED_TRIGGER_GRPS 存储已暂停的Trigger组的信息 QRTZ_SCHEDULER_STATE 存储少量的有关Scheduler的状态信息,和别的Scheduler实例 QRTZ_LOCKS...IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; DROP TABLE IF EXISTS QRTZ_LOCKS...CHECKIN_INTERVAL BIGINT(13) NOT NULL, PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)) ENGINE=InnoDB; CREATE TABLE QRTZ_LOCKS
EXISTS QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; DROP TABLE IF EXISTS QRTZ_LOCKS...CHECKIN_INTERVAL BIGINT(13) NOT NULL, PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)) ENGINE=InnoDB; CREATE TABLE QRTZ_LOCKS
missed their scheduled fire-time …”(处理错过调度触发时间点的前20个触发器) 4.数据库session增加,许多session等待在“SELECT * FROM qrtz_LOCKS...4.许多MySQL sessions 等待在“SELECT * FROM qrtz_LOCKS WHERE SCHED_NAME = ‘SCHED_NAME’ AND LOCK_NAME = ‘TRIGGER_ACCESS
QRTZ_LOCKS 集群实现同步机制的行锁表 QRTZ_SCHEDULER_STATE 实例信息,集群下多使用。
| | QRTZ_CRON_TRIGGERS | | QRTZ_FIRED_TRIGGERS | | QRTZ_JOB_LISTENERS | | QRTZ_LOCKS...QRTZ_FIRED_TRIGGERS` ( CREATE TABLE `QRTZ_JOB_DETAILS` ( CREATE TABLE `QRTZ_JOB_LISTENERS` ( CREATE TABLE `QRTZ_LOCKS
IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; DROP TABLE IF EXISTS QRTZ_LOCKS...------------------------ -- 10、 存储程序的悲观锁的信息(假如使用了悲观锁) -- ---------------------------- create table QRTZ_LOCKS...IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; DROP TABLE IF EXISTS QRTZ_LOCKS...检查间隔时间'; -- ---------------------------- -- 11、存储的悲观锁信息表 -- ---------------------------- CREATE TABLE QRTZ_LOCKS...NULL, LOCK_NAME VARCHAR(40) NOT NULL, PRIMARY KEY (SCHED_NAME, LOCK_NAME) ); COMMENT ON TABLE QRTZ_LOCKS
TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;DROP TABLE IF EXISTS QRTZ_LOCKS...CHECKIN_INTERVAL BIGINT(13) NOT NULL,PRIMARY KEY (SCHED_NAME,INSTANCE_NAME))ENGINE=InnoDB;CREATE TABLE QRTZ_LOCKS...QRTZPAUSEDTRIGGER_GRPS 存储已暂停的 Trigger 组的信息 QRTZSCHEDULERSTATE 存储少量的有关 Scheduler 的状态信息,和别的 Scheduler实例(假如是用于一个集群中) QRTZ_LOCKS
IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; DROP TABLE IF EXISTS QRTZ_LOCKS...CHECKIN_INTERVAL BIGINT(13) NOT NULL, PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) ); CREATE TABLE QRTZ_LOCKS
qrtz_fired_triggers | table | postgres ambari | qrtz_job_details | table | postgres ambari | qrtz_locks
qrtz_fired_triggers 存储与已触发的Trigger相关的状态信息,以及相联Job的执行信息 qrtz_job_details 存储每一个已配置的Job的详细信息 qrtz_locks
QRTZ_PAUSED_TRIGGER_GRPS 存储已暂停的 Trigger 组的信息 QRTZ_SCHEDULER_STATE 存储少量的有关 Scheduler 的状态信息,和别的 Scheduler 实例(假如是用于一个集群中) QRTZ_LOCKS
| | QRTZ_CRON_TRIGGERS | | QRTZ_FIRED_TRIGGERS | | QRTZ_JOB_DETAILS | | QRTZ_LOCKS
drop table qrtz_blob_triggers,qrtz_calendars,qrtz_cron_triggers,qrtz_fired_triggers,qrtz_job_details,qrtz_locks
NULL, CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) ); CREATE TABLE qrtz_locks...org.quartz.dataSource.myDS.maxConnections = 5 #org.quartz.dataSource.myDS.validationQuery = select lock_name from qrtz_locks
IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; DROP TABLE IF EXISTS QRTZ_LOCKS...CHECKIN_INTERVAL BIGINT(13) NOT NULL, PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)) ENGINE=InnoDB; CREATE TABLE QRTZ_LOCKS