【发布时间】:2018-01-27 04:07:21
【问题描述】:
我们从 Spring Batch 2.1.7 迁移到 Spring Batch 3.0.6,但是得到了这个 jboss 启动错误:
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;错误的 SQL 语法 [SELECT E.JOB_EXECUTION_ID, E.START_TIME, E.END_TIME, E.STATUS, E.EXIT_CODE, E.EXIT_MESSAGE, E.CREATE_TIME, E.LAST_UPDATED, E.VERSION, E.JOB_INSTANCE_ID, E.JOB_CONFIGURATION_LOCATION from BATCH_JOB_EXECUTION E, BATCH_JOB_INSTANCE I 其中 E.JOB_INSTANCE_ID=I.JOB_INSTANCE_ID 和 I.JOB_NAME=?并且 E.END_TIME 是 E.JOB_EXECUTION_ID desc] 的 NULL 顺序;嵌套异常是 java.sql.SQLSyntaxErrorException: ORA-00904: "E"."JOB_CONFIGURATION_LOCATION": 标识符无效
...这显然是由 Spring Batch 3 自动迁移引起的,其中 Spring Batch 3 与 Spring Batch 2 相比有一些表结构变化。
为了让事情向前发展,我们的 DBA 团队使用我们的开发团队在其中一个 Spring Batch jar 中找到的创建表脚本编写了一个脚本来更新(而不是创建)表,因为我们需要作业历史记录。到目前为止,这一切都有效,但这是我们的问题:
我们无法将所有系统都迁移到 Spring Batch 3。我们必须将旧系统留在 Spring Batch 2 中一段时间。
这些 Spring Batch 3 表结构更改是否向后兼容 Spring Batch 2?
它们似乎来自我们的 DBA 团队的分析以及我们迄今为止的批处理运行结果,但我只是问这是否是 Spring 故意的,即当 Spring 为 Spring Batch 3 更改表结构时,您是否有意使其向后兼容?
到目前为止,它们似乎是兼容的,但我只是想确保没有一些细微的差异会严重破坏我们的系统在一些不常用的逻辑路径上,即在语句执行时(与 jboss 启动时间)。
本·埃里奇
【问题讨论】:
标签: spring-batch