項目啓動後,報如下錯誤
[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
根據錯誤提示,解決方案如下
- 打開項目連接的數據庫(我的是遠程服務器上的數據庫music);
- 打開數據表,找到錯誤提示中的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的項! - 添加錯誤提示中的syncTriggerBean項(每個人定義的名稱不同),其中,CRON_EXPRESSION爲自定義的定時週期,和項目中定義的一致即可。
- 重啓項目。