【问题标题】:Spring batch tables creation fails in MariaDBMariaDB 中的 Spring 批处理表创建失败
【发布时间】:2019-05-24 19:27:08
【问题描述】:

我使用此架构在 MariaDB -https://github.com/spring-projects/spring-batch/blob/master/spring-batch-core/src/main/resources/org/springframework/batch/core/schema-mysql.sql 中创建 Spring 批处理表。

BATCH_JOB_EXECUTION_PARAMS 表失败并出现以下错误

Error: (conn=10719030) This table type requires a primary key
SQLState:  42000
ErrorCode: 1173

【问题讨论】:

    标签: mariadb spring-batch entity-attribute-value


    【解决方案1】:

    如果该组合是唯一的,则将 PRIMARY KEY(JOB_EXECUTION_ID, KEY_NAME) 添加到 BATCH_JOB_EXECUTION_PARAMS

    BATCH_JOB_EXECUTION_SEQ也没有PK。 UNIQUE 键可以提升为 PK。 (其他一些表也是如此。)那个特定的表相当奇怪——它将一个 1 字节的 UNIQUE_KEY 变成了一个 8 字节的 id!?!

    BATCH_JOB_EXECUTION_PARAMS 是经典 EAV 模式的一个非常糟糕的变体。

    【讨论】:

      【解决方案2】:

      MySQL 和 MariaDB 是不同的产品,看起来它们在主键方面的行为不同。您正在对 Spring Batch 未正式支持的 MariaDB 服务器使用 MySQL DDL 脚本。

      因此要么相应地调整脚本(通过手动添加主键)并注意 Spring Batch 不一定会按预期工作,因为它不正式支持 MariaDB,或者在项目的 JIRA 中打开一个功能请求来请求支持 MariaDB。

      【讨论】:

      • ... Spring Batch 不一定能按预期工作,因为它不正式支持 MariaDB ... 我知道这是一个旧帖子,但想检查它是否是仍然如此,因为我找不到有关 Spring Batch 支持的数据库引擎的太多信息。
      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 2019-03-05
      • 2015-04-17
      相关资源
      最近更新 更多