【问题标题】:Are Spring Batch 3 database structure changes compatible with Spring Batch 2?Spring Batch 3 数据库结构更改是否与 Spring Batch 2 兼容?
【发布时间】: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


    【解决方案1】:

    它们向后兼容。作业参数的存储方式不同。迁移脚本没有删除旧列(只是添加了新的列)。这并不意味着您无法提出适用于两个版本的架构(看起来就是您所拥有的),但就我们的意图而言,当我们添加非标识参数时,它被确定为重大更改.

    【讨论】:

    • 如果保存历史不重要。是否可以迁移到版本 3 的新架构,并且仍然有几批运行版本 2?
    • @thomas77 - 你得到这个问题的答案了吗?看起来我们即将经历从 2 到 3 的相同类型的迁移,并且还需要保持一些作业使用 2 运行,而其他作业升级到 3...
    猜你喜欢
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2016-05-30
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多