Eclipselink:临时表的列长和mb4

时间:2018-09-19 06:56:37

标签: mysql mariadb eclipselink

我们正在使用Eclipselink 2.7,并将Maria-DB设置为联合类型UTF8-mb4。原则上,除了定义的DELETE语句外,设置工作良好。为此,Eclipselink要执行

CREATE TEMPORARY TABLE IF NOT EXISTS TL_tf (SHA1 VARCHAR(255) NOT NULL, VALUE VARCHAR(255), PRIMARY KEY (SHA1))

这会失败,原因是MariaDB由于大小限制而拒绝了该命令,即SHA1太长,无法与PRIMARY KEY的UTF8-MB4设置一起使用。

设置@Column(length=100)被Eclipselink忽略。

是否可以通过MariaDB或Eclipselink更改设置?

1 个答案:

答案 0 :(得分:0)

由于SHA1仅为160位/ 20字节/ 40十六进制,因此没有理由使用255。

CHAR(40) CHARACTER SET ascii

或使用UNHEX(SHA1(...))并存储在较小的

BINARY(20)

使用PRIMARY KEY的哈希不能很好地扩展。一旦表太大而无法完全缓存,对表的访问将成为I / O绑定。对于巨大的表,这可能是一个严重的问题。