问题描述
我收到以下错误:
Caused by: org.teiid.jdbc.TeiidSQLException: TEIID31100 Parsing error: Encountered "insert into \"form\".\"form_insertdefault_1\" [*]default[*] values"
我只需要用默认值填充表,手动插入工作正常。
INSERT INTO form.form_insertdefault_1 DEFAULT VALUES;
我使用 postgresql 数据库和 JOOQ (InsertQuery.setDefaultValues()) 进行数据库映射。
解决方法
TEIID 不是 jOOQ 中支持的方言,而且我认为 PostgreSQL 方言不会让你走得太远,因为很多 PostgreSQL 东西是多么具体。我会尝试使用 H2 或 HSQLDB 方言。
在任何情况下,如果您想在不受支持的方言上运行 jOOQ,您必须自己进行很多模拟,例如这个模拟。您可以为每列列出 DEFAULT VALUES
(使用 DSL.default_()
)表达式,而不是只有极少数 RDBMS 本身支持的 DEFAULT
。无论如何,这就是 jOOQ 对大多数方言所做的。例如
insert into form.form_insertdefault_1 (col1,col2,col3)
values (default,default,default);
甚至,只列出一列:
insert into form.form_insertdefault_1 (col1)
values (default);
或者,如果 DEFAULT
也不受支持,请选择一个没有附加到其定义的 DEFAULT
表达式的任意可空列,并插入 NULL
,在那里:
insert into form.form_insertdefault_1 (nullable_non_defaulted_column)
values (null);