使用MODE作为DB2查询H2中的序列

时间:2016-03-31 05:49:42

标签: h2

我正在使用H2 1.4.191对生产中针对DB2运行的一些代码进行单元测试。我在H2和DB2中创建了一个序列,如下所示 -

NSSetUncaughtExceptionHandler

代码会像这样查询 -

CREATE SEQUENCE TABLENAME_SEQ 
START WITH 1
INCREMENT BY 1
NO CYCLE
CACHE 50;

由于代码基本上是针对DB2运行的,因此它会针对SELECT NEXTVAL FOR TABLENAME_SEQ FROM SYSIBM.SYSDUMMY1 进行选择。

单元测试的H2 URL将模式指定为DB2,这是否意味着H2将针对SYSIBM.SYSDUMMY1进行查询,或者我在此处遗漏了一些内容。

SYSIBM.SYSDUMMY1

这是我得到的错误 -  org.h2.jdbc.JdbcSQLException:SQL语句中的语法错误"从SYSIBM.SYSDUMMY1"中选择NEXTVAL FOR TABLENAME_SEQ; SQL语句: 从SYSIBM.SYSDUMMY1 [42000-191]

为TABLENAME_SEQ选择NEXTVAL

我知道用于从q序列中选择的H2的systax是不同的,但是因为我指定了mode = db2,它是否适用于DB2 systax?

1 个答案:

答案 0 :(得分:0)

设置连接时,只需在网址中添加INIT指令:

jdbc:h2:./testdb;MV_STORE=FALSE;MVCC=FALSE;MODE=DB2;INIT=CREATE SCHEMA IF NOT EXISTS SYSIBM\\;CREATE TABLE IF NOT EXISTS SYSIBM.SYSDUMMY1()

请注意,只有Java中才需要双反斜杠(\)。之前的反斜杠;在INIT内是必需的。

我希望这会对你有所帮助