Java 无法将SB配置为使用MySQL托管的批处理表
我在配置Spring以使用MySQL托管的批处理表时遇到了一些问题。 我根据文档创建了表,但代码似乎试图使用Oracle Flavor函数获取序列号 我得到的错误是: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:字段列表中的未知表“批处理作业顺序” 但这掩盖了真正的问题。我调试了它并尝试运行以下代码:Java 无法将SB配置为使用MySQL托管的批处理表,java,mysql,spring,jdbc,spring-batch,Java,Mysql,Spring,Jdbc,Spring Batch,我在配置Spring以使用MySQL托管的批处理表时遇到了一些问题。 我根据文档创建了表,但代码似乎试图使用Oracle Flavor函数获取序列号 我得到的错误是: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:字段列表中的未知表“批处理作业顺序” 但这掩盖了真正的问题。我调试了它并尝试运行以下代码: select " + getIncrementerName() + ".nextval from dual"; 这显然是甲
select " + getIncrementerName() + ".nextval from dual";
这显然是甲骨文方言。我注意到我的环境中存在正确的递增器:
org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer
但是它的召唤
org.springframework.jdbc.support.incrementer.OracleMaxValueIncrementer
我已将数据源设置为:
<bean id="springDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://10.252.205.5:3306/MASKNG" />
<property name="username" value="MASKNG" />
<property name="password" value="maskng" />
</bean>
任何人都有一个想法,因为这是我们atm的一个表演障碍。好吧,好吧,我真的应该再做一点RTM…你只需要告诉jobRepository bean你正在使用什么类型的DB
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="dataSource" ref="springDataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="validateTransactionState" value="${jobRepository.validationTransactionState:true}" />
<property name="isolationLevelForCreate" value="${jobRepository.isolationLevelForCreate}" />
<!-- <property name="databaseType" value="oracle" /> -->
<property name="databaseType" value="mysql" />
<property name="tablePrefix" value="BATCH_" />
<property name="lobHandler" ref="lobHandler"/>
</bean>
好吧,好吧,我真的应该多做一点RTM…你只需要告诉jobRepository bean你正在使用什么类型的DB
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="dataSource" ref="springDataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="validateTransactionState" value="${jobRepository.validationTransactionState:true}" />
<property name="isolationLevelForCreate" value="${jobRepository.isolationLevelForCreate}" />
<!-- <property name="databaseType" value="oracle" /> -->
<property name="databaseType" value="mysql" />
<property name="tablePrefix" value="BATCH_" />
<property name="lobHandler" ref="lobHandler"/>
</bean>
你能用System.out.printselect+getIncrementerName+nextval从dual;打印这行吗;;并向我们展示结果?您确定您根据此处的MySQL文档创建了批处理表吗?这清楚地显示了BATCH_JOB_SEQ表作为其中一个表,其中还有一个insert。请使用System.out.printselect+getIncrementerName+.nextval from dual;打印这一行好吗;;并向我们展示结果?您确定您根据此处的MySQL文档创建了批处理表吗?这清楚地显示了BATCH_JOB_SEQ表作为其中一个表,并且在其中也有一个insert。