在数据库中配置Spring批处理基础结构-MySQL数据截断错误

在数据库中配置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

我已经实现了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: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