quartz2.1.5 调用 scheduler.start()方法时报异常

问题描述

quartz2.1.5 调用 scheduler.start()方法时报这样一个异常:严重: An error occurred while scanning for the next triggers to fire.org.quartz.JobPersistenceException: Couldn't acquire next trigger: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=1' at line 1 [See nested exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=1' at line 1]at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2840)at org.quartz.impl.jdbcjobstore.JobStoreSupport$41.execute(JobStoreSupport.java:2755)at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3811)at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTriggers(JobStoreSupport.java:2751)at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:264)Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=1' at line 1at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)at com.mysql.jdbc.Connection.execSQL(Connection.java:3099)at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1248)at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTriggerToAcquire(StdJDBCDelegate.java:2571)at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2781)... 4 more我数据库用的是mysql,quartz.properties配置文件时这样的:org.quartz.scheduler.instanceName: SchedulerName#是否支持远程管理 false:不支持 (服务端) org.quartz.scheduler.rmi.export: false#是否支持远程代理 false:不支持 (客服端)org.quartz.scheduler.rmi.proxy: false#如果你要 Quartz 在调用你的 Job 的 execute 之前启动一个 UserTransaction 的话,设置这个属性为 true 。#这个事物将在 Job 的 execute 方法完成和 JobDataMap (假如是一个 StatefulJob ) 更新后提交。默认值为 false 。org.quartz.scheduler.wrapJobExecutionInUserTransaction: false#默认线程池类org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool#最多只能有50个线程并发 org.quartz.threadPool.threadCount: 50#线程优先级别org.quartz.threadPool.threadPriority: 5#指定由石英产生的线程将继承范围内的初始化线程的ClassLoader(线程初始化石英实例)。 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true#线程之间错开后允许间隔时间 毫秒为单位 如果超过这个时间 下一个线程不执行 反之 执行org.quartz.jobStore.misfireThreshold: 60000##所有的Quartz数据,例如Job和Trigger的细节信息被存储在内存中。 数据库:org.quartz.impl.jdbcjobstore.JobStoreTX:内存:org.quartz.simpl.RAMJobStoreorg.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX#根据选择的数据库类型不同而不同 PostgreSQLDelegate(mysql)org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate#org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.HSQLDBDelegate#org.quartz.jobStore.dataSource = myDS#org.quartz.jobStore.isClustered = false#org.quartz.jobStore.useProperties = trueorg.quartz.jobStore.tablePrefix = QRTZ_#isClustered设置为"true"激活集群特性org.quartz.jobStore.isClustered = falseorg.quartz.jobStore.maxMisfiresToHandleAtATime=1请问大神,这是什么原因啊?百度了好久,都没找到具体原因

解决方案

OPTION SQL_SELECT_LIMIT=1改为SET SQL_SELECT_LIMIT=1;http://forums.terracotta.org/forums/posts/list/8001.page还有一种说法是mysql的bug,可以升级jdbc驱动引用This is a common pb with MySQL 5.6 ; just update the jar jdbc connector :- download from this place : http://www.mysql.com/downloads/connector/j/- and extract the "mysql-connector-java-5.X.XX-bin.jar" from the zip- go to the gateway configuration page and edit the driver (database>drivers)http://www.inductiveautomation.com/forum/viewtopic.php?f=72&p=35017

时间: 2024-09-19 09:57:01

quartz2.1.5 调用 scheduler.start()方法时报异常的相关文章

查看网站中WEB服务中的方法时报异常

问题描述 在WEB服务中写了一个返回泛型的方法,上边也加上了[WebMethod]标签,但是在添加WEB服务的时候我查看一下这个方法,点击调用的时候说"无法查看网页",不晓得这个是什么异常,请各位高手给帮帮忙啊!!! 解决方案 解决方案二:该回复于2009-04-04 20:41:06被版主删除

继承-JAVA 实现接口方法时报错 implement a supertype method

问题描述 JAVA 实现接口方法时报错 implement a supertype method public interface MultimediaControl { public void play(); public void stop(); public void previous(); public void next(); } public class AudioPlayer extends Product implements MultimediaControl { String

spring定时任务-Spring 定时任务 在执行方法时报空指针

问题描述 Spring 定时任务 在执行方法时报空指针 定时任务的xml: com.boco.auto.AutoIPV6BusinessAlarmStatisticsReport 0 30 3 * * ? Spring注入: class="com.boco.web.struts.action.report.ReportCommonActionPipeRes" parent="baseAction"> <!-- add liuhuipeng -->

异步调用Web服务方法

基于Ajax技术构建的门户是web 2.0这一代中最为成功的Web应用程序.而这块市场上iGoogle和Pageflakes这两大站点已经走在了时代的前列. 当你打开Pageflakes,将会看到如下的界面: 接下来就是界面上的各个"部件"去向服务器请求各种web服务,而服务器作为代理,则代为向外部web服务发出请求.(这是因为ajax调用无法跨越,所以常通过代理来请求数据) 问题场景:某个很受用户欢迎的"部件"很长时间不能执行,导致很对请求无法及时执行,引起请求失

开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)

当你添加Asp.net AJAX功能到你的Web程序的时候,你需要在Web.config中做一些改变,需要你显式地移除默认的ASMX处理程序并且添加asp.net ajax框架自己的脚本处理器来作为ASMX处理程序.在上一篇异步调用Web服务方法中,我们谈论过,ajax框架的asmx(ScriptHandler)是不支持异步调用Web服务方法的,所以为了让asp.netajax支持异步Web方法调用,我们需要避开该处理器,以提供自定义的处理器来取代它. Asp.netAJAX框架的ASMX处理器

ocx-VS2010怎么使用OCX,调用里面的方法?

问题描述 VS2010怎么使用OCX,调用里面的方法? 能告诉我一下具体步骤,和调用里面的方法? 解决方案 工具栏右键,加载项,加入ocx组件,这样就和使用其他的一样了 解决方案二: 一种是增加类,导出ActiveX接口! 二是跟调用dll类似! 解决方案三: 在项目-添加引用,选择com选项卡,点浏览,找到你的ocx,确定即可. 解决方案四: import导入对应的com组件,然后就会生成包装类,你就可以调用类的方法

借助封装类实现线程调用带参方法

(一).描述      由于线程只能执行无参数方法. 有时候需要线程执行"带参数方法"      此示例演示怎样借助封装类实现"线程调用带参方法"(二).代码 本示例代码已经测试,能够正常运行! (三).示例下载  http://www.cnblogs.com/Files/ChengKing/ThreadExample.rar using System;using System.Threading; namespace 借助封装类实现_线程调用带参方法_{ clas

从Js调用一个AS方法

js 从Js调用一个AS方法: 为了从js调用as的方法,你必须确认一下四个文件都包含在你的html文档中: <script type="text/javascript" src="/path/to/Exception.js"></script>  <script type="text/javascript" src="/path/to/FlashTag.js"></script>

.net下不用AJAX实现前台JS调用后台C#方法(小技巧)

纯属小技巧,高手见笑了. 一提到如何在前台JS调用后台C#方法,AJAX成为了必然的想法. 只是实现的细节采用AJAX 1.0或者AjaxPro的区别. 其实如果不用AJAX,我们也能够很方便地利用JS调用后台方法. 步骤如下: 1 前台放一个按钮.设置为隐藏.注意:不能直接设置Visible=false的方式,这样的话在ASP.Net 2.0编译后的代码里是找不到这个按钮的.需要设置风格:style="display:none;" 2 双击按钮,写入C#方法,或者写一个调用后台其他方