2016-03-31 9 views
1

H2 1.4.191を使用して、本番環境でDB2に対して実行されるコードの一部を単体テストします。私はthis-H2でMODEをDB2として照会する

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

のようにH2とDB2の両方でシーケンスを作成し、コードはコードは基本的にDB2に対して実行することを意図されているので、それはSYSIBM.SYSDUMMY1に対して選択するthis-

SELECT NEXTVAL FOR TABLENAME_SEQ FROM SYSIBM.SYSDUMMY1 

ようにそれを問い合わせます。

単体テストのH2 URLは、モードをDB2として指定します。これは、H2がSYSIBM.SYSDUMMY1に対してクエリを実行するか、ここで何か不足していることを意味します。ここで

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

は私が org.h2.jdbc.JdbcSQLExceptionをGET-エラーです:SQLステートメントの構文エラーは、 "SYSIBM.SYSDUMMY1 FROM TABLENAME_SEQ FOR NEXTVALを選択"; SQL文:SYSIBM.SYSDUMMY1 FROM TABLENAME_SEQ FOR SELECT NEXTVAL [42000から191]

私はQ配列から選択するためのH2のsystaxが異なっていることを知っているが、私はモード= DB2を指定するので、それはDB2のsystaxで動作するはず?

答えて

0

あなたの接続がちょうどURLで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内に必要です。

これがあなたに役立つことを願っています。

関連する問題