1. 程式人生 > 其它 >quartz資料不完整導致不排程並且報錯Couldn‘t store trigger

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