春季批处理表创建在MariaDB中失败

时间:2018-12-26 14:56:04

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

我使用此架构在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

2 个答案:

答案 0 :(得分: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模式的一个非常糟糕的变体。

答案 1 :(得分:0)

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

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