quartz數據不完整導致不調度並且報錯Couldn‘t store trigger


MisfireHandler: Error handling misfires: Couldn't store trigger '218111-TRIGGER' for '218111' job:The job (xx-JOBGROUP.218111) referenced by the trigger does not exist. org.quartz.JobPersistenceException: Couldn't store trigger '218111-TRIGGER' for '218111' job:The job (xx-JOBGROUP.218111) referenced by the trigger does not exist.

這是因為qrtz_triggers表中有2188111的調度時間信息,但是在qrtz_job_details表里缺少了2188111的數據,導致quartz調度更新觸發器表的時候發現數據不完整而報錯,也就沒有調度。只要從qrtz_triggers和qrtz_cron_triggers表中刪除掉該數據即可。

select *
-- DELETE
from qrtz_triggers where TRIGGER_NAME = '218111' ;

select *
-- DELETE
from qrtz_cron_triggers where TRIGGER_NAME = '218111';

select *
-- DELETE
from qrtz_job_details where JOB_NAME =218111 ;

下面提供一個全面排查這種數據的sql

SELECT
j.JOB_NAME
FROM
qrtz_triggers j
LEFT JOIN qrtz_job_details t ON j.JOB_NAME = t.JOB_NAME
LEFT JOIN qrtz_cron_triggers ct ON CONCAT(j.JOB_NAME, '-TRIGGER') = ct.TRIGGER_NAME

WHERE
j.JOB_GROUP = 'xx-JOBGROUP'
AND (
t.JOB_NAME IS NULL
OR ct.TRIGGER_NAME IS NULL
)
UNION
-- 查詢qrtz_job_details調度計划詳情表中有但是qrtz_triggers,qrtz_cron_triggers或r_job表中沒有的流程
SELECT
j.JOB_NAME
FROM
qrtz_job_details j
LEFT JOIN qrtz_triggers t ON j.JOB_NAME = t.JOB_NAME
LEFT JOIN qrtz_cron_triggers ct ON CONCAT(j.JOB_NAME, '-TRIGGER') = ct.TRIGGER_NAME

WHERE
j.JOB_GROUP = 'xx-JOBGROUP'
AND (
t.JOB_NAME IS NULL
OR ct.TRIGGER_NAME IS NULL
)
————————————————
版權聲明:本文為CSDN博主「shy_snow」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/shy_snow/article/details/121357641


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM