记录定时器quartz创建定时任务出现异常,导致项目无法启动
今天因为linux服务器部署问题,就重新搭建了数据库的环境并把本地后台代码重新打了个包放上去,结果服务器还是没部署好,本地倒是启动不了了,就很懵逼。毕竟我又没改代码,怎么还连服务器都启动不了了。后面才发现是linux上数据库的问题。也是我基础薄弱,对这块完全不了解,现在就碰到任何错误都记录一下,避免再犯
异常信息: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘scheduleJobController’: Unsatisfied dependency expressed through field ‘scheduleJobService’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘scheduleJobService’: Invocation of init method failed; nested exception is com.yiqi.common.exception.RRException: 创建定时任务失败
熟悉了定时器,再回头看之前的问题,其实我们按照上面给的异常信息去定位是很简单的,定位到抛出异常的地方,然后找到了原因:项目项目启动时会初始化定时器,但是它数据库里的两个方法是不存在的(大概率被删除了),就会初始化失败,这里代码逻辑有点问题,明明是暂停状态的方法也同样先读取启动然后再暂停,我是觉得如果是暂停状态的任务,直接就可以不读取了。
这里我是直接删了数据库里的两个方法解决的。
另外我在这里还出现了一个问题,就是大小写表名的情况,windows的mysql默认表名都是小写的,而项目所在的linux插入表时是区分大小写的,这里定时器用到了一些表就是大写表名,数据库如果不注意操作,就可能发生表找不到的情况。
下面是原来的文章,也留着就当记录自己的成长
2019.9.27
异常信息: Exception encountered during context initialization - cancelling
refresh attempt:
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name ‘scheduleJobController’: Unsatisfied
dependency expressed through field ‘scheduleJobService’; nested
exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name ‘scheduleJobService’: Invocation of init
method failed; nested exception is
com.yiqi.common.exception.RRException: 创建定时任务失败
解决办法: 清空以下4个表
qrtz_blob_triggers; qrtz_cron_triggers ; qrtz_triggers ;
qrtz_job_details; 不过我直接把所有定时器相关表都删了,重新导入了公司框架里的定时器那块sql。不过最后也没能知道出错的原因和细节,只是单纯的解决了而已,等以后熟悉了定时器可能才会明白吧
更多推荐
所有评论(0)