Добавьте специфичный для mysql ROW_FORMAT = DYNAMIC для создания оператора таблицы, сгенерированного jooq - PullRequest
3 голосов
/ 12 марта 2019

У меня есть приложение, которое мне нужно перенести в mysql 5.6.

Это приложение использует довольно большие составные ключи, которые прекрасно работают в MySQL 5.7, потому что префикс innodb-large-prefix включен по умолчанию.

Я могу настроить mysql 5.6 для использования префикса innodb-large-prefix, но для этого также необходимо создавать таблицы с ROW_FORMAT=DYNAMIC или COMPRESSED.

Вот пример SQL, который я хотел бы получить, используя 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

1 Ответ

2 голосов
/ 13 марта 2019

Вы можете добавить пользовательские предложения хранения к операторам CREATE TABLE, используя метод CreateTableStorageStep.storage().Например,

ctx.createTable("domain")
   .column("path", VARCHAR(300).nullable(false))
   .constraint(constraint("index1").unique("path"))
   .storage("ROW_FORMAT=DYNAMIC")
   .execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...