2016-06-03 8 views
0

Ich habe ein Projekt mit mehreren Integrationstests. Um die Geschwindigkeit dieser Tests zu verbessern, habe ich beschlossen, die H2-Datenbank während des Laufens zu verwenden. Aber ich möchte immer noch, dass meine Anwendung mit DB2 ausgeführt wird.H2 mit DB2-Modus erkennt Schlüsselwort 'Minute' nicht

angegebenen H2 in DB2-Modus auszuführen:

url: "jdbc:h2:mem:TEST;\ 
     MODE=DB2;\ 
     DB_CLOSE_DELAY=-1;\ 
     DB_CLOSE_ON_EXIT=FALSE;\ 
     INIT=CREATE SCHEMA IF NOT EXISTS SYSIBM\\;\ 
     CREATE TABLE IF NOT EXISTS SYSIBM.SYSDUMMY1()" 

Einer meiner Tests funktioniert nicht, wenn ich diese Anfrage ausführen:

update batch set running=current timestamp where id=? and (running is null or running < current timestamp + 1 minute) 

ich diese Fehlermeldung habe:

ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Syntax error in SQL statement "UPDATE BATCH SET RUNNING=CURRENT TIMESTAMP WHERE ID=? AND (RUNNING IS NULL OR RUNNING < CURRENT TIMESTAMP + 1 MINUTE[*]) "; expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,,)"; 

Es scheint, dass MINUTE nicht erkannt wird. Kann mir jemand helfen ?

+0

Was ist mit 60 Sekunden? – MichaelTiefenbacher

+0

Leider funktioniert es nicht. –

Antwort

1

Haben Sie versucht, mit TIMESTAMPDIFF()running und CURRENT_TIMESTAMP zu vergleichen? Diese Funktion scheint sowohl von H2 als auch von DB2 unterstützt zu werden.

+0

Ich habe es bereits getestet. Ich verwende jedoch DB2 9.7 und diese Funktion existiert nicht. –

+0

DB2 9.7 hat 'TIMESTAMPDIFF()' (https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000861.html) aber die Die Syntax unterscheidet sich von H2 und ist möglicherweise keine der Funktionen, die H2 im DB2-Kompatibilitätsmodus verarbeiten kann. –

Verwandte Themen