【问题标题】:JDBC DatabaseMetaData method not implemented by JDBC(T4SQLMX) driverJDBC(T4SQLMX) 驱动程序未实现 JDBC DatabaseMetaData 方法
【发布时间】:2019-09-17 01:17:59
【问题描述】:

我正在设置一个 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 时,它可以正常工作但无法正常工作。

【问题讨论】:

    标签: spring-boot spring-boot-test hp-nonstop tandem sqlmx


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复!实际上,我正在使用 t4sqlmx 驱动程序,但它似乎没有该方法。你能分享一下你正在使用的t4驱动程序的版本吗?我可能需要请求我们的 HP 团队更新驱动程序。
    【解决方案2】:

    在 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 驱动程序没有任何经验,但希望这能有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-01-01
      • 2015-12-22
      • 2017-11-13
      • 2019-07-18
      • 1970-01-01
      • 2015-07-23
      • 2015-03-23
      • 2012-08-27
      • 2016-08-18
      相关资源
      最近更新 更多