我有一个应用程序,我需要向后移植到mysql 5.6。
此应用程序使用相当大的复合键,在mysql 5.7上运行正常,因为默认情况下启用了innodb-large-prefix。
我可以配置mysql 5.6使用innodb-large-prefix,但它还需要使用ROW_FORMAT=DYNAMIC
或COMPRESSED
创建表。
这是我想用jooq
实现的SQL示例:
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()
语句添加自定义存储子句。例如。
ctx.createTable("domain")
.column("path", VARCHAR(300).nullable(false))
.constraint(constraint("index1").unique("path"))
.storage("ROW_FORMAT=DYNAMIC")
.execute();