具有 DB2 模式的 H2 无法识别关键字 'minute'
H2 with DB2 mode does not recognize keyword 'minute'
我有一个包含多个集成测试的项目。为了提高这些测试的速度,我决定在 运行 时使用 H2 数据库。但我仍然希望我的 applciation 运行 使用 DB2。
我在 DB2 模式下将 H2 指定为 运行 :
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。谁能帮我 ?
您是否尝试过使用 TIMESTAMPDIFF()
来比较 running
和 CURRENT_TIMESTAMP
? H2 和 DB2 似乎都支持该功能。
我有一个包含多个集成测试的项目。为了提高这些测试的速度,我决定在 运行 时使用 H2 数据库。但我仍然希望我的 applciation 运行 使用 DB2。
我在 DB2 模式下将 H2 指定为 运行 :
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。谁能帮我 ?
您是否尝试过使用 TIMESTAMPDIFF()
来比较 running
和 CURRENT_TIMESTAMP
? H2 和 DB2 似乎都支持该功能。