У меня есть приложение, которое мне нужно перенести в mysql 5.6.
Это приложение использует довольно большие составные ключи, которые прекрасно работают в MySQL 5.7, потому что префикс innodb-large-prefix включен по умолчанию.
Я могу настроить mysql 5.6 для использования префикса innodb-large-prefix, но для этого также необходимо создавать таблицы с ROW_FORMAT=DYNAMIC или COMPRESSED.
ROW_FORMAT=DYNAMIC
COMPRESSED
Вот пример SQL, который я хотел бы получить, используя jooq:
jooq
CREATE TABLE `domain` ( `path` varchar(300) NOT NULL, UNIQUE KEY `index1` (`path`) ) ROW_FORMAT=DYNAMIC;
Для справки приведена документация mysql 5.6:
https://dev.mysql.com/doc/refman/5.6/en/innodb-restrictions.html https://dev.mysql.com/doc/refman/5.6/en/innodb-row-format.html https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_large_prefix
Вы можете добавить пользовательские предложения хранения к операторам CREATE TABLE, используя метод CreateTableStorageStep.storage().Например,
CREATE TABLE
CreateTableStorageStep.storage()
ctx.createTable("domain") .column("path", VARCHAR(300).nullable(false)) .constraint(constraint("index1").unique("path")) .storage("ROW_FORMAT=DYNAMIC") .execute();