0

我正在设置一个 Spring-boot 应用程序以连接到 HP NonStop Tandem 的 SQL/MX。首先,我通过在应用程序的服务部分对 jdbc 参数(如 dataSource、URL 等)进行硬编码来实现这种连接,并且它起作用了(我能够通过执行查询来访问表)。

现在我正在尝试删除硬编码部分并在 application.properties 文件中包含与数据库相关的信息,但现在我收到以下错误

org.springframework.jdbc.support.MetaDataAccessException:JDBC 驱动程序未实现 JDBC DatabaseMetaData 方法 - 升级您的驱动程序;嵌套异常是 java.lang.AbstractMethodError:方法 com/tandem/t4jdbc/SQLMXConnection.isValid(I)Z 是抽象的

有人可以帮助我了解根本原因吗?在对数据源详细信息进行硬编码时使用相同的驱动程序 jar,并且当在 application.properties 中具有数据源属性并且需要升级到 jar 时,它可以正常工作但无法正常工作。

4

2 回答 2

1

在 Spring Boot 应用程序、JTDS 驱动程序和 Hikari 连接池中使用 Spring Data JPA 时,我遇到了同样的异常。就我而言,我发现以下解决了问题:

检查 com.zaxxer.hikari.pool.PoolBase 类,可以观察到以下内容:

this.isUseJdbc4Validation = config.getConnectionTestQuery() == null;

因此,如果配置了连接测试查询,则不会尝试 JDBC 4 验证。在 Spring Boot 应用程序中,可以这样完成:

spring.datasource.hikari.connection-test-query=select 1;

遗憾的是,我对 T4SQLMX 驱动程序没有任何经验,但希望这可以有所帮助。

于 2019-08-30T08:54:09.177 回答
0

我最近解决了同样的问题,因为我使用的是 JDBC 3 类驱动程序;但是我的 spring 实现只支持类型 4 驱动程序,因此当您尝试调用上面链接的方法时,它会导致错误。

我建议您为您的特定数据库寻找类型 4 驱动程序,看看是否能解决您的问题。

于 2019-05-10T21:47:09.340 回答