Spring Batch Admin Integration to DB2 throw SqlIntegrityConstraintViolationException

时间:2017-02-16 23:31:30

标签: spring configuration admin

我正在尝试将Spring批处理管理器集成到现有的spring批处理程序中。使用hsqldb可以正常运行,但是当我们将它配置为DB2时,它会抛出SqlIntegrityConstraintViolationException。已经在DB2中使用admin jar中提供的默认脚本创建了Db2表。

我们正在使用石英调度程序来触发作业。

以下是异常跟踪

Caused by: org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT into OD1.ABC_BATCH_JOB_EXECUTION(JOB_EXECUTION_ID, JOB_INSTANCE_ID, START_TIME, END_TIME, STATUS, EXIT_CODE, EXIT_MESSAGE, VERSION, CREATE_TIME, LAST_UPDATED, JOB_CONFIGURATION_LOCATION) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; AN UPDATE, INSERT, OR SET VALUE IS NULL, BUT THE OBJECT COLUMN *N CANNOT CONTAIN NULL VALUES. SQLCODE=-407, SQLSTATE=23502, DRIVER=3.62.56; nested exception is com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: AN UPDATE, INSERT, OR SET VALUE IS NULL, BUT THE OBJECT COLUMN *N CANNOT CONTAIN NULL VALUES. SQLCODE=-407, SQLSTATE=23502, DRIVER=3.62.56
       at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:249)
       at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
       at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605)
       at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:818)
       at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:874)
       at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:878)
       at org.springframework.batch.core.repository.dao.JdbcJobExecutionDao.saveJobExecution(JdbcJobExecutionDao.java:157)

配置如下

#DB2 configuration
batch.job.jndi=jdbc/DBOMS
batch.tableprefix=OD1.ABC_BATCH_
batch.schema.script=
batch.drop.script=
batch.business.schema.script=
batch.database.incrementer.class=org.springframework.jdbc.support.incrementer.DB2SequenceMaxValueIncrementer
batch.job.configuration.file.dir=target/config
batch.data.source.init=false
batch.job.service.reaper.interval=60000
batch.isolationlevel=ISOLATION_READ_COMMITTED
batch.jdbc.testWhileIdle=false
batch.jdbc.validationQuery=
batch.database.incrementer.parent=sequenceIncrementerParent
batch.table.prefix=OD1.ABC_BATCH_

1 个答案:

答案 0 :(得分:0)

我们发现了问题,我们将表脚本提供给了DBA。但DBA创建的表格与他们遵循的标准相符并成功 START_TIME TIMESTAMP NOT NULL WITH DEFAULT而不是START_TIME TIMESTAMP DEFAULT NULL。这导致了这个问题,希望这有助于某人。

相关问题