0

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

BATCH_JOB_EXECUTION_PARAMS 表失败并出现以下错误

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

2 回答 2

1

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

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

于 2018-12-28T22:00:53.160 回答
1

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

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

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

于 2018-12-26T17:30:00.003 回答