问题原因
项目配置中包含了如下配置:
spring.datasource.xx=xxx
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
之前版本:当配置dataSource后,即使配置文件中已经指定了JobStoreTX,实际还是使用LocalDataSourceJobStore。LocalDataSourceJobStore使用已经配置的dataSource作为数据源。
升级后的版本:配置文件中指定org.quartz.jobStore.class后,会使用指定的JobStore。该JobStore对应的dataSource需要专门配置。
修改方案
方案一
使用LocalDataSourceJobStore
spring.datasource.xx=xxx
spring.quartz.properties.org.quartz.jobStore.class=org.springframework.scheduling.quartz.LocalDataSourceJobStore
方案二
使用JobStoreTX,同时指定quartz的数据源。
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.jobStore.dataSource=myDS
spring.quartz.properties.org.quartz.dataSource.myDS.driver=org.h2.Driver
spring.quartz.properties.org.quartz.dataSource.myDS.URL=jdbc:h2:mem:testdb
spring.quartz.properties.org.quartz.dataSource.myDS.user=sa
spring.quartz.properties.org.quartz.dataSource.myDS.password=
spring.quartz.properties.org.quartz.dataSource.myDS.maxConnections=5
spring.quartz.properties.org.quartz.dataSource.myDS.provider=hikaricp