Spring batch Spring批处理实例id重复密钥错误,尝试从#1开始

Spring batch Spring批处理实例id重复密钥错误,尝试从#1开始,spring-batch,Spring Batch,我正在将java代码(使用springboot spring批处理)和数据库从开发服务器复制到本地(桌面)并运行它。得到一个错误 它在Dev服务器中运行良好。在本地,spring批处理正在将作业实例重置为1并导致主键错误。spring批处理中是否有任何选项以下一个实例id而不是1开始?请让我知道 参考下面的stackoverflow链接,似乎相关,但几年前发布,参考链接不再起作用。 错误: com.microsoft.sqlserver.jdbc.SQLServerException:违反主键

我正在将java代码(使用springboot spring批处理)和数据库从开发服务器复制到本地(桌面)并运行它。得到一个错误

它在Dev服务器中运行良好。在本地,spring批处理正在将作业实例重置为1并导致主键错误。spring批处理中是否有任何选项以下一个实例id而不是1开始?请让我知道

参考下面的stackoverflow链接,似乎相关,但几年前发布,参考链接不再起作用。

错误: com.microsoft.sqlserver.jdbc.SQLServerException:违反主键 约束“PK_uuu批次_uuJO_uuuuuu4848154AFB54355C7”。无法插入重复的密钥 在对象“dbo.BATCH\u JOB\u INSTANCE”中。重复的键值为(5)

spring批处理中是否有任何选项可以从下一个实例id开始

为了回答您的问题,您正在寻找的“选项”是。它每次都会增加一个名为“run.id”的作业参数,以便在每次运行时都有一个新实例

然而,这不是我将如何解决这个问题(见我的评论)。您需要检查发生此重复密钥异常的原因并修复它。检查是否使用相同的参数启动作业,从而生成相同的实例(即使发生这种情况,如果正确配置了作业存储库的事务隔离级别,也不应该出现这种异常。如果最后一次执行成功,我预计会出现
JobInstanceAlreadyCompleteException
;如果最后一次执行失败而另一次执行失败,则会出现
JobExecutionAlreadyRunningException
)当前正在运行)

spring批处理中是否有任何选项可以从下一个实例id开始

为了回答您的问题,您正在寻找的“选项”是。它每次都会增加一个名为“run.id”的作业参数,以便在每次运行时都有一个新实例


但是,这不是我解决问题的方法(请参阅我的评论)。您需要检查发生此重复密钥异常的原因并进行修复。检查是否使用相同的参数启动作业,从而导致相同的实例(即使发生这种情况,如果正确配置了作业存储库的事务隔离级别,也不应该出现这种异常。如果最后一次执行成功,我预计会出现
JobInstanceAlreadyCompleteException
;如果最后一次执行失败而另一次执行失败,则会出现
JobExecutionAlreadyRunningException
)当前正在运行)。

spring batch正在将作业实例重置为1
:spring batch不会重置id。请确保每次都没有创建数据库架构。数据源是如何配置的?是否指示spring boot始终创建架构(通过
spring.batch.initialize schema
属性)?我已经尝试过spring.batch.initialize schema=never,这仍然是同一个问题。当我将数据从开发服务器复制到本地数据库时,batch_JOB_*表中有来自开发中运行的作业的数据。出于某些原因,在本地spring中,batch从1开始序列,以确定作业实例ID
spring batch正在将作业实例重置为1
:spring Batch不会重置id。确保每次都不会创建数据库架构。数据源是如何配置的?是否指示spring boot始终创建架构(通过
spring.batch.initialize schema
属性)?我已经尝试过spring.batch.initialize schema=never,这仍然是同一个问题。当我将数据从开发服务器复制到本地数据库时,batch_JOB_*表中有来自开发中运行的作业的数据。出于某些原因,在本地spring中,batch从1开始序列以确定作业实例ID
@Configuration
@EnableBatchProcessing
public class Jobclass {
   #Rest of the code with Job Bean and steps which works fine in Dev server
}