項目啓動時Quartz定時任務報錯(已解決)

項目啓動後,報如下錯誤


[cm] WARN [localhost-startStop-1] AbstractApplicationContext.refresh(487) | Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘mapScheduler’ defined in class path resource [application-quartz.xml]: Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn’t retrieve trigger: No record found for selection of Trigger with key: ‘DEFAULT.syncTriggerBean’ and statement: SELECT * FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME = ‘mapScheduler’ AND TRIGGER_NAME = ? AND TRIGGER_GROUP = ? [See nested exception: java.lang.IllegalStateException: No record found for selection of Trigger with key: ‘DEFAULT.syncTriggerBean’ and statement: SELECT * FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME = ‘mapScheduler’ AND TRIGGER_NAME = ? AND TRIGGER_GROUP = ?]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1568)
(省略)
Caused by: org.quartz.JobPersistenceException: Couldn’t retrieve trigger: No record found for selection of Trigger with key: ‘DEFAULT.syncTriggerBean’ and statement: SELECT * FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME = ‘mapScheduler’ AND TRIGGER_NAME = ? AND TRIGGER_GROUP = ? [See nested exception: java.lang.IllegalStateException: No record found for selection of Trigger with key: ‘DEFAULT.syncTriggerBean’ and statement: SELECT * FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME = ‘mapScheduler’ AND TRIGGER_NAME = ? AND TRIGGER_GROUP = ?]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1533)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$12.execute(JobStoreSupport.java:1522)
at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:245)
(省略)
Caused by: java.lang.IllegalStateException: No record found for selection of Trigger with key: ‘DEFAULT.syncTriggerBean’ and statement: SELECT * FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME = ‘mapScheduler’ AND TRIGGER_NAME = ? AND TRIGGER_GROUP = ?
at org.quartz.impl.jdbcjobstore.CronTriggerPersistenceDelegate.loadExtendedTriggerProperties(CronTriggerPersistenceDelegate.java:92)
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTrigger(StdJDBCDelegate.java:1819)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1531)
… 32 more


根據錯誤提示,解決方案如下

  1. 打開項目連接的數據庫(我的是遠程服務器上的數據庫music);
  2. 打開數據表,找到錯誤提示中的QRTZ_CRON_TRIGGERS表;
    QRTZ_CRON_TRIGGERS
    原表內容如下:
    QRTZ_CRON_TRIGGERS
    再看一遍核心錯誤提示:
    No record found for selection of Trigger with key: ‘DEFAULT.syncTriggerBean’ and statement: SELECT * FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME = ‘mapScheduler’ AND TRIGGER_NAME = ? AND TRIGGER_GROUP = ?
    結合表的內容可知,SCHED_NAME列少了名爲mapScheduler、且TRIGGER_NAME爲syncTriggerBean的項!
  3. 添加錯誤提示中的syncTriggerBean項(每個人定義的名稱不同),其中,CRON_EXPRESSION爲自定義的定時週期,和項目中定義的一致即可。
    QRTZ_CRON_TRIGGERS
  4. 重啓項目。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章