从对象 jooq 3.9.0 和 3.9.1 生成 DDL

Generating DDL from objects jooq 3.9.0 and 3.9.1

我目前正在使用 jooq,对于我的单元测试,我使用内存中的 H2 数据库,我在其中使用 jooq 生成的元数据创建表,如中所述 https://www.jooq.org/doc/3.9/manual/sql-building/ddl-statements/generating-ddl/

在 3.8.4 中它工作正常,但在升级到 3.9.0(或 3.9.1)时出现错误:

Queries queries = dslContext.ddl(DefaultSchema.DEFAULT_SCHEMA);
    for (Query query : queries.queries()) {
        query.execute();
    }

错误:

java.lang.ArrayIndexOutOfBoundsException:-1

at org.jooq.impl.SchemaImpl.<init>(SchemaImpl.java:78)
at org.jooq.impl.DSL.schema(DSL.java:7199)
at org.jooq.impl.DefaultDSLContext.createSchema(DefaultDSLContext.java:2605)
at org.jooq.impl.DefaultDSLContext.createSchema(DefaultDSLContext.java:2600)
at org.jooq.impl.DDL.queries(DDL.java:112)
at org.jooq.impl.DefaultDSLContext.ddl(DefaultDSLContext.java:2487)
at org.jooq.impl.DefaultDSLContext.ddl(DefaultDSLContext.java:2482)

感谢您的报告。这是 jOOQ 3.9.0 和 3.9.1 中的错误。我为此创建了 https://github.com/jOOQ/jOOQ/issues/5979

解决方法是在此处排除架构生成:

Queries queries = dslContext.ddl(DefaultSchema.DEFAULT_SCHEMA, DDLFlag.TABLE, ...);