2016-06-03 1 views
0

У меня есть проект с несколькими интеграционными тестами. Чтобы улучшить скорость этих тестов, я решил использовать базу данных H2 во время их запуска. Но я все еще хочу, чтобы мои приложения выполнялись с DB2.H2 с режимом DB2 не распознает ключевое слово «минута»

Уточняю Н2 работать в режиме DB2:

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()" 

Один из моих тестов не работает, когда я выполняю этот запрос:

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

У меня есть сообщение об ошибке:

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, ,,)"; 

Кажется, что MINUTE не распознается. Может кто-нибудь мне помочь ?

+0

Как насчет 60 секунд? – MichaelTiefenbacher

+0

К сожалению, он не работает. –

ответ

1

Вы пытались использовать TIMESTAMPDIFF() для сравнения running и CURRENT_TIMESTAMP? Эта функция поддерживается как H2, так и DB2.

+0

Я уже протестировал его. Однако я использую DB2 9.7, и эта функция не существует. –

+0

DB2 9.7 имеет 'TIMESTAMPDIFF()' (https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000861.html), но синтаксис отличается от H2 и не может быть одной из функций, которые H2 может обрабатывать в режиме совместимости DB2. –