项目中使用quartz做定时任务遇见的一些问题总结
quartz做持久化配置:
在配置文件中加入这些配置信息就会在数据库生成quartz自带的表,一共11张表
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
#spring.quartz.jdbc.initialize-schema=never
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
spring.quartz.properties.org.quartz.jobStore.useProperties=false
spring.quartz.properties.org.quartz.jobStore.tablePrefix=qrtz_
spring.quartz.properties.org.quartz.jobStore.misfireThreshold=60000
spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=5000
spring.quartz.properties.org.quartz.jobStore.isClustered=true
spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
spring.quartz.properties.org.quartz.threadPool.threadCount=10
spring.quartz.properties.org.quartz.threadPool.threadPriority=5
spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
一般生成之后持久化就配置成功了,这个时候有可能会遇到,找不到quartz这些表的情况,控制台会报出来,说找不到某某张表。这个时候有可能就是数据库配置的区分大小写的问题,一般情况下都是不区分的,不确定的话,可以使用下面这个sql查询一下,一般为1的话就是不区分。
show variables like ‘%lower_case_table_names%’;
一般这样的话本地就成功了。
但是有可能部署在服务器上也会出现这种可能,如果服务器上面的mysql和本地不一致的话,就需要改一下服务器mysql配置文件了
找到mysql配置文件,把这段配置加进去就好了
lower_case_table_names=1
但是这样可能还是会出现问题,会出现quartz自动生成的那11张表,不全,而且一个大写一个小写的情况,这个时候就还把服务器上的mysql配置恢复到之前的,把之前加在配置文件的配置删掉。让quartz重新生成,这个时候项目还会报错的话,不要犹豫,直接把控制台报的表名的格式,统一在数据库把quartz生成的那11张表改成和控制台报出来的一致即可。
开发记录随笔…