Spring Batch: Could not increment identity; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name #39;BATCH_JOB_SEQ#39;?(Spring Batch:无法增加标识;嵌套异常是com.microsoft.sqlserver.jdbc.SQLServerException:无效对象名称#39;BATCH_JOB_SEQ#39
问题描述
我们正在为Spring批处理应用程序从Oracle DB迁移到Azure SQL Server。
尝试执行迁移到SQL Server后的作业时出现以下错误
无法增加标识;嵌套异常为 com.microsoft.sqlserver.jdbc.SQLServerException:对象名称无效 ‘AppName.BATCH_JOB_SEQ’。
我确信SQL Server具有所需的序列
在作业存储库配置下面
<batch:job-repository id="jobRepository"
isolation-level-for-create="READ_COMMITTED"
table-prefix="MyApp.BATCH_"/>
下面是Oracle中提供的表格和序列
下面是Azure SQL中提供的表和序列
我正在使用以下版本
我是否应该升级到
还是应该按照https://github.com/spring-projects/spring-batch/blob/main/spring-batch-core/src/main/resources/org/springframework/batch/core/schema-sqlserver.sql
重新创建表推荐答案
该错误可能与从Oracle迁移到Azure SQL Server有关。
如您在引擎盖下的source code of the library中所见,当generating the ids for jobs, job executions, and step executions时,Spring批次使用不同的策略。
在Oracle案例中,他们使用sequences;对于SQL Server,他们使用tables with an identity column实现id生成。
迁移过程还复制了Spring Batch所需的不同Oracle序列,当前述SQL Server ID生成策略尝试获取下一个值时,很可能是它导致了问题。
请删除迁移的序列,并使用适当的值创建SQL Server所需的three tables:
CREATE TABLE BATCH_STEP_EXECUTION_SEQ (
ID BIGINT IDENTITY(<last analogous Oracle sequence value>, 1)
);
CREATE TABLE BATCH_JOB_EXECUTION_SEQ (
ID BIGINT IDENTITY(<last analogous Oracle sequence value>, 1)
);
CREATE TABLE BATCH_JOB_SEQ (
ID BIGINT IDENTITY(<last analogous Oracle sequence value>, 1)
);
这篇关于Spring Batch:无法增加标识;嵌套异常是com.microsoft.sqlserver.jdbc.SQLServerException:无效对象名称';BATCH_JOB_SEQ';?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Spring Batch:无法增加标识;嵌套异常是com.microsoft.sqlserver.jdbc.SQLServerException:无效对象名称';BATCH_JOB_SEQ';?
基础教程推荐
- 修改 void 函数的输入参数,然后读取 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
