2016-03-31 55 views
1

我正在使用H2 1.4.191來單元測試在生產中針對DB2運行的一些代碼。我創建了像這個 -使用MODE作爲DB2查詢H2中的序列

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

兩個H2序列和DB2和代碼查詢它像這個 -

SELECT NEXTVAL FOR TABLENAME_SEQ FROM SYSIBM.SYSDUMMY1 

由於代碼基本上意味着對DB2上運行,它會選擇對SYSIBM.SYSDUMMY1

單元測試的H2 URL將模式指定爲DB2,這是否意味着H2將針對SYSIBM.SYSDUMMY1進行查詢,還是我在此處丟失了某些內容。

jdbc:h2:./testdb;MV_STORE=FALSE;MVCC=FALSE;MODE=DB2 

這裏是我GET- org.h2.jdbc.JdbcSQLException錯誤:在SQL語句的語法錯誤 「SELECT NEXTVAL FOR TABLENAME_SEQ FROM SYSIBM.SYSDUMMY1」; SQL語句:SELECT NEXTVAL FOR TABLENAME_SEQ FROM SYSIBM.SYSDUMMY1 [42000-191]

我知道H2的systax爲自Q序列選擇是不同的,但因爲我指定的模式= DB2,應該把它與DB2 systax工作?

回答

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內是必需的。我希望這會幫助你