Eclipselink: длина столбца и mb4 для временной таблицы - PullRequest
0 голосов
/ 19 сентября 2018

Мы используем 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 слишком длинен для вместе с настройками UTF8-MB4 для PRIMARY KEY.

Настройка @Column(length=100) игнорируется Eclipselink.

Есть ли способ изменить настройки либо в MariaDB, либо в Eclipselink?

1 Ответ

0 голосов
/ 06 октября 2018

Поскольку SHA1 составляет только 160 бит / 20 байтов / 40 шестнадцатеричных символов, нет смысла использовать 255. Вместо этого:

CHAR(40) CHARACTER SET ascii

или используйте UNHEX(SHA1(...)) и сохраняйте в меньшем

BINARY(20)

Использование хешей для PRIMARY KEY плохо масштабируется.Как только таблица становится слишком большой, чтобы ее можно было полностью кэшировать, доступ к ней становится связанным с вводом / выводом.Это может быть серьезной проблемой для огромных столов.

...