【发布时间】:2014-03-06 14:41:53
【问题描述】:
我正在尝试使用 JOOQ 连接到 HSQLDB,但我失败了,这是错误消息:
INFO: Initialising properties : /codegen.xml
2014-02-09T09:55:19.542+0100 SEVERE Error while fetching check constraints
org.jooq.exception.DataAccessException: SQL [select "tc"."TABLE_SCHEMA", "tc"."TABLE_NAME", "cc"."CONSTRAINT_NAME", "cc"."CHECK_CLAUSE" from "INFORMATION_SCHEMA"."TABLE_CONSTRAINTS" as "tc" join "INFORMATION_SCHEMA"."CHECK_CONSTRAINTS" as "cc" using( "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME") where "tc"."TABLE_SCHEMA" in (cast(? as varchar(128)))]; user lacks privilege or object not found: cc.CONSTRAINT_NAME
此查询在 HSQLDB 管理器上也失败(与 JOOQ 代码生成器的错误相同):
select "tc"."TABLE_SCHEMA", "tc"."TABLE_NAME", "cc"."CHECK_CLAUSE" , "cc"."CONSTRAINT_NAME"
from "INFORMATION_SCHEMA"."TABLE_CONSTRAINTS" as "tc"
join "INFORMATION_SCHEMA"."CHECK_CONSTRAINTS" as "cc"
using( "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME")
这个查询工作正常:
select "tc"."TABLE_SCHEMA", "tc"."TABLE_NAME", "cc"."CHECK_CLAUSE" , "CONSTRAINT_NAME"
from "INFORMATION_SCHEMA"."TABLE_CONSTRAINTS" as "tc"
join "INFORMATION_SCHEMA"."CHECK_CONSTRAINTS" as "cc"
using( "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME")
我认为问题出在“cc”限定符上(在查询返回的“CONSTRAINT_NAME”字段上),这是 HSQLDB 错误吗?
我正在使用:
- HSQLDB 2.3.1
- JOOQ 3.2.3
谢谢 西西奥
【问题讨论】:
-
删除连接上的“Using”子句(使用 on 子句)查询正常工作。是否可以强制 JOOQ 使用而不使用?
-
我只是想让你知道我已经通过更改包含子句“.on”中的子句“.using”的类 HSQLDBDatabase 找到了解决方案,现在它可以正常工作了。我想..我会告诉你的。