【问题标题】:H2 database DbException - Unsupported connection setting "MULTI_THREADED"H2 数据库 DbException - 不支持的连接设置“MULTI_THREADED”
【发布时间】:2023-03-08 00:09:01
【问题描述】:

最近,我将 ignite 版本升级到了 2.10.0。这也需要升级 H2 数据库,因为 H2 对 ignite 有硬依赖。于是我把H2数据库更新到了1.4.200。

从那以后我的测试用例失败了。

错误日志:-

Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Unsupported connection setting "MULTI_THREADED" [90113-200]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:622)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
    at org.h2.message.DbException.get(DbException.java:205)
    at org.h2.message.DbException.get(DbException.java:181)
    at org.h2.engine.ConnectionInfo.readSettingsFromURL(ConnectionInfo.java:269)
    at org.h2.engine.ConnectionInfo.<init>(ConnectionInfo.java:78)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152)
    at org.h2.Driver.connect(Driver.java:69)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)
    at org.apache.ignite.internal.processors.query.h2.ConnectionManager.<init>(ConnectionManager.java:118)
    ... 133 more

我使用 maven 作为我的构建工具。我的 Java 版本是 jdk11.0.9_12。

编辑:

根据H2 Version 1.4.200 Release Notes,去掉了MULTI_THREADED设置,MVStore引擎永远是多线程的,PageStore引擎永远是单线程的。

但我没有在代码中的任何位置添加 MULTI_THREADED 设置。

编辑:

将 H2 版本更改为 1.4.197 会给出新的异常,如下所示:-

Caused by: org.h2.jdbc.JdbcSQLException: Function "LOCK_MODE" not found; SQL statement:
CALL LOCK_MODE() [90022-197]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
    at org.h2.message.DbException.get(DbException.java:179)
    at org.h2.message.DbException.get(DbException.java:155)
    at org.h2.command.Parser.readJavaFunction(Parser.java:2699)
    at org.h2.command.Parser.readFunction(Parser.java:2756)
    at org.h2.command.Parser.readTerm(Parser.java:3102)
    at org.h2.command.Parser.readFactor(Parser.java:2587)
    at org.h2.command.Parser.readSum(Parser.java:2574)
    at org.h2.command.Parser.readConcat(Parser.java:2544)
    at org.h2.command.Parser.readCondition(Parser.java:2370)
    at org.h2.command.Parser.readAnd(Parser.java:2342)
    at org.h2.command.Parser.readExpression(Parser.java:2334)
    at org.h2.command.Parser.parseCall(Parser.java:4854)
    at org.h2.command.Parser.parsePrepared(Parser.java:382)
    at org.h2.command.Parser.parse(Parser.java:335)
    at org.h2.command.Parser.parse(Parser.java:307)
    at org.h2.command.Parser.prepareCommand(Parser.java:278)
    at org.h2.engine.Session.prepareLocal(Session.java:611)
    at org.h2.engine.Session.prepareCommand(Session.java:549)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1251)
    at org.h2.jdbc.JdbcConnection.getTransactionIsolation(JdbcConnection.java:815)
    at com.zaxxer.hikari.pool.PoolBase.checkDefaultIsolation(PoolBase.java:479)
    at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:442)
    at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:410)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:363)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
    ... 151 more

【问题讨论】:

  • 我不明白你想在这里做什么。您是否使用 H2 JDBC 驱动程序连接到 Ignite?你用H2做什么?如果您只是使用 Ignite,则没有理由手动设置对 H2 的任何引用。
  • @StephenDarlington - 我没有将 H2 用于 Ignite。我仅将 H2 用于我的测试用例。但不知何故,由于弹簧自动装配,流程正在通过与测试用例无关的 HikariDataSource。这很奇怪。我在测试类的顶部使用了@RunWith(SpringRunner.class) @SpringBootTest,当我运行时会给出这个异常。

标签: ignite hikaricp spring-framework-beans h2db


【解决方案1】:

根据Ignite 2.10.0 GitHub,您需要使用1.4.197版本

也可以在项目根目录下运行mvn dependency:tree | grep h2查看H2依赖

【讨论】:

  • 版本降级改变了异常-Function "LOCK_MODE" not found。 grep 命令现在返回 - [INFO] +- com.h2database:h2:jar:1.4.197:compile
【解决方案2】:

org.apache.ignite:ignite-indexing:2.12.0 和 Micronaut 3.2.6 也有类似的问题,这对我有用:

    implementation ('com.h2database:h2') {
        version {
            strictly '1.4.197'
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2015-10-16
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多