我想使用HSQL进行集成测试。因此,我想设置与我用于生产的完全相同的脚本的测试模式。这是postgresql方言。在测试脚本中,我试图设置方言,但它似乎不起作用。
至少对于uuid数据类型和约束,我得到语法错误异常。例如。我得到一个:
CREATE TABLE testtable(id bigint NOT NULL,some_uuid uuid NOT NULL,name character varying(32)NOT NULL,CONSTRAINT testtable PRIMARY KEY(id))WITH(OIDS = FALSE);嵌套异常是java.sql.SQLSyntaxErrorException:未找到类型或用户缺少权限:UUID
对于以下脚本:
SET DATABASE SQL SYNTAX PGS TRUE;
CREATE TABLE testtable
(
id bigint NOT NULL,
some_uuid uuid NOT NULL,
name character varying(32) NOT NULL,
CONSTRAINT testtable PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
我得到:
无法执行类路径资源[setupTestData.sql]的SQL脚本语句#2:CREATE TABLE testtable(id bigint NOT NULL,name character varying(32)NOT NULL,CONSTRAINT testtable PRIMARY KEY(id))WITH(OIDS = FALSE) ;嵌套异常是java.sql.SQLSyntaxErrorException:意外令牌:(
对于这个脚本:
SET DATABASE SQL SYNTAX PGS TRUE;
CREATE TABLE testtable
(
id bigint NOT NULL,
--some_uuid uuid NOT NULL,
name character varying(32) NOT NULL,
CONSTRAINT testtable PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
HSQLDB 2.3.4及更高版本支持UUID。
HSQLDB目前不支持PostgreSQL扩展WITH (ODS= FALSE)