Quartz JDBCJobStore与MySQL有关

时间:2014-06-17 08:53:53

标签: java mysql spring quartz-scheduler

我试图在我的spring mvc项目中通过job store使用Job persistence,但我的数据库结构似乎有些错误。

我的数据库是MySQL(v 5.6.15),我使用Quartz jar(v 1.8.6)中的脚本创建表。

执行一些测试我发现作业和触发器在DB中保持不变(我希望)正确加载,但它们没有被执行。触发状态始终开启"等待"。

我尝试在SqlServer实例上创建表结构(总是使用提供的脚本),现在它可以工作了!那么,MySql有什么问题?

我注意到的唯一区别是MySQL中的表名是小写的,而不是SqlServer中的全部大写,这可能是个问题吗?

我的配置如下:

通过弹簧进行计划程序配置

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="quartzProperties">
        <map>
            <entry key="org.quartz.scheduler.instanceName" value="gep_scheduler" />
            <!-- ThreadPool -->
            <entry key="org.quartz.threadPool.class" value="org.quartz.simpl.SimpleThreadPool" />
            <entry key="org.quartz.threadPool.threadCount" value="3" />
            <entry
                key="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread"
                value="true" />
            <!-- JobStore -->
            <entry key="org.quartz.jobStore.class" value="org.quartz.impl.jdbcjobstore.JobStoreTX" />
            <entry key="org.quartz.jobStore.driverDelegateClass" value="org.quartz.impl.jdbcjobstore.StdJDBCDelegate" />
            <entry key="org.quartz.jobStore.tablePrefix" value="qrtz_" />
            <entry key="org.quartz.jobStore.dataSource" value="qzDS" />
            <entry key="org.quartz.jobStore.isClustered" value="false" />
            <entry key="org.quartz.jobStore.misfireThreshold" value="60000" />
            <!-- DataSource -->
            <entry key="org.quartz.dataSource.qzDS.driver" value="${db.driver}" />
            <entry key="org.quartz.dataSource.qzDS.URL" value="${db.url}" />
            <entry key="org.quartz.dataSource.qzDS.user" value="${db.user}" />
            <entry key="org.quartz.dataSource.qzDS.password" value="${db.password}" />
            <entry key="org.quartz.dataSource.qzDS.maxConnections" value="${db.maxActivePools}" />
            </map>
    </property>
</bean>

注意不会抛出任何异常。

1 个答案:

答案 0 :(得分:4)

我终于从调度程序中发现了一个异常:

  

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=5' at line 1

问题出在MySQL驱动程序中。我使用的v5.1.6似乎与MySQL 5.6.x版本不兼容。

我解决了导入mysql-connector的最新版本(目前为v5.1.31)。