在数据库中配置Spring批处理基础结构-MySQL数据截断错误
我已经实现了Spring批处理作业存储库实现,以将作业元数据存储在 数据库 持久作业存储库的配置在数据库中配置Spring批处理基础结构-MySQL数据截断错误,spring,spring-batch,Spring,Spring Batch,我已经实现了Spring批处理作业存储库实现,以将作业元数据存储在 数据库 持久作业存储库的配置 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:batch="http://www.springframework.org/schema/batch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:batch="http://www.springframework.org/schema/batch"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/batch
http://www.springframework.org/schema/batch/spring-batch-2.2.xsd">
<!-- stored job-meta in memory -->
<batch:job-repository id="jobRepository"
data-source="dataSource"
transaction-manager="transactionManager" />
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>
</beans>
由于此错误,无法插入值,也无法插入作业元数据
只是一个更新-以下表格结构是在MySQL中创建的:-
CREATE TABLE `batch_job_execution` (
`JOB_EXECUTION_ID` bigint(20) NOT NULL,
`VERSION` bigint(20) DEFAULT NULL,
`JOB_INSTANCE_ID` bigint(20) NOT NULL,
`CREATE_TIME` date DEFAULT NULL,
`START_TIME` datetime DEFAULT NULL,
`END_TIME` datetime DEFAULT NULL,
`STATUS` varchar(10) DEFAULT NULL,
`EXIT_CODE` varchar(100) DEFAULT NULL,
`EXIT_MESSAGE` varchar(2500) DEFAULT NULL,
`LAST_UPDATED` datetime DEFAULT NULL,
PRIMARY KEY (`JOB_EXECUTION_ID`),
KEY `JOB_INST_EXEC_FK` (`JOB_INSTANCE_ID`),
CONSTRAINT `JOB_INST_EXEC_FK` FOREIGN KEY (`JOB_INSTANCE_ID`) REFERENCES `batch_job_instance` (`JOB_INSTANCE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
您是否尝试过使用Oracle作为job repo元数据持有者并检查它是否有效?因为,如线程中所述,我的SQL连接器驱动程序可能会出现问题。您可以尝试以下JDBC选项:
jdbcCompliantTruncation=false
它可能在Oracle中工作,但他们在mysql中的任何解决方案是否可能更改mysql驱动程序或mysql版本,如果可能,hi@bellabax,设置jdbcomplianttrunation=false将立即删除截断错误,但是现在我得到了
org.springframework.batch.core.JobExecutionException:流执行意外结束Exception有完整的堆栈跟踪将有帮助:)我尝试设置jdbCompliantRunning=false。现在它没有向我显示截断错误和表中插入的值。但是,现在我得到的异常为:-退出状态:[org.springframework.batch.core.JobExecutionException:流执行意外结束]。你知道,我应该如何调试它。不知道抱歉,您需要提供整个StackTraceRight,但是CREATE\u TIME的类型不应该是dateTime而不是date吗?
CREATE TABLE `batch_job_execution` (
`JOB_EXECUTION_ID` bigint(20) NOT NULL,
`VERSION` bigint(20) DEFAULT NULL,
`JOB_INSTANCE_ID` bigint(20) NOT NULL,
`CREATE_TIME` date DEFAULT NULL,
`START_TIME` datetime DEFAULT NULL,
`END_TIME` datetime DEFAULT NULL,
`STATUS` varchar(10) DEFAULT NULL,
`EXIT_CODE` varchar(100) DEFAULT NULL,
`EXIT_MESSAGE` varchar(2500) DEFAULT NULL,
`LAST_UPDATED` datetime DEFAULT NULL,
PRIMARY KEY (`JOB_EXECUTION_ID`),
KEY `JOB_INST_EXEC_FK` (`JOB_INSTANCE_ID`),
CONSTRAINT `JOB_INST_EXEC_FK` FOREIGN KEY (`JOB_INSTANCE_ID`) REFERENCES `batch_job_instance` (`JOB_INSTANCE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
jdbcCompliantTruncation=false