如何使用SQL脚本手动将Quartz触发器状态更新为COMPLETED
针对Quartz 3.0.7版本的JDBC存储模式,仅执行你提供的UPDATE语句修改QRTZ_TRIGGERS表的触发器状态是不够的,你需要根据实际场景同步处理以下关联表:
- 先确认触发器类型处理对应子表:
- 如果是Cron触发器,需要同步检查
QRTZ_CRON_TRIGGERS表中同TRIGGER_NAME、TRIGGER_GROUP的记录,确认没有配置后续触发规则,如果是误创建的冗余触发器可以直接删除该表的对应关联记录 - 如果是Simple触发器,需要同步修改
QRTZ_SIMPLE_TRIGGERS表中对应记录的TIMES_TRIGGERED值为和REPEAT_COUNT值相等,避免调度器读取到未完成的重复计数后重新触发该任务
- 如果是Cron触发器,需要同步检查
- 检查运行时记录:同步校验
QRTZ_FIRED_TRIGGERS表中是否存在该触发器的执行中记录,如果存在可以同步删除,避免调度器判定该触发器处于运行中状态,和你设置的COMPLETED状态冲突 - 如需彻底清理冗余数据:还可以同步删除
QRTZ_TRIGGER_LISTENERS表中对应触发器的关联记录,如果该触发器绑定的作业没有其他触发器关联,也可以同步删除QRTZ_JOB_DETAILS中的对应作业记录,减少无效数据占用
操作前建议先备份所有Quartz相关库表的全量数据,修改完成后重启调度服务实例,清除调度器本地的状态缓存,避免缓存的旧状态和数据库修改后的新状态冲突导致调度异常。
内容的提问来源于stack exchange,提问作者Mubarak Patel
相关产品推荐
相关产品推荐

