【问题标题】:Presto JDBC Connection Pool Creation ERROR "Disabling auto-commit mode not supported"Presto JDBC 连接池创建错误“不支持禁用自动提交模式”
【发布时间】:2018-09-05 01:19:29
【问题描述】:

我正在尝试使用 Spring-JDBC 连接到 Presto,并且我正在使用 Hikari CP 作为数据源。 这是我的配置:

@Bean
public DataSource myDataSource() {
    HikariDataSource hikariDataSource = new HikariDataSource();
    hikariDataSource.setDriverClassName("com.facebook.presto.jdbc.PrestoDriver");
    hikariDataSource.setJdbcUrl("xxxxxxx");
    hikariDataSource.setMaximumPoolSize(10);
    hikariDataSource.setMinimumIdle(5);
    hikariDataSource.setIdleTimeout(10000);
    hikariDataSource.setConnectionTimeout(60000);
    hikariDataSource.setUsername("xxxx");
    hikariDataSource.setPassword("xxxx");
    hikariDataSource.setAutoCommit(false);

    return hikariDataSource;
}

在我的服务类中自动装配数据源时,我收到此错误:

java.sql.SQLFeatureNotSupportedException: Disabling auto-commit mode not supported
at com.facebook.presto.jdbc.PrestoConnection.setAutoCommit(PrestoConnection.java:126) ~[presto-jdbc-0.163.jar:0.163]

依赖关系:用于 Springboot 基础 1.5.10.RELEASE

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>2.7.8</version>
    </dependency>
    <dependency>
        <groupId>com.facebook.presto</groupId>
        <artifactId>presto-jdbc</artifactId>
        <version>0.163</version>
    </dependency>

【问题讨论】:

    标签: java spring-jdbc hikaricp presto


    【解决方案1】:

    您正在禁用自动提交模式:

    hikariDataSource.setAutoCommit(false);
    

    当您的 Presto 驱动程序不支持此操作并将引发异常时。从@Bean 中删除setAutoCommit(false)。这在open issue #3592 中进行了讨论。

    另一种选择是将驱动程序更新到较新的版本,因为在 master 上自动提交是 already handled in PrestoConnection。最新版本是 0.197。

    【讨论】:

      【解决方案2】:

      最近遇到了这个问题,偶然发现了thisgithub 上的讨论。 我尝试了 hikari CP 和 commons dbcp 并尝试了 autoCommit (true) 和 (false) 但似乎没有任何效果。

      不知何故,在 spring-jdbc 中,我看到 PrestoConnection 类发生了多次调用,其中一次 boolean autoCommit 为 false 导致此错误。 解决方案

      1) 覆盖创建的 bean 以确保传递有效参数

      2)升级到最新的 0.197 presto-jdbc,它对我有用(如 Karol 的回答中所述)

      【讨论】:

        猜你喜欢
        • 2021-06-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-15
        • 2016-03-29
        • 1970-01-01
        • 2020-05-06
        • 1970-01-01
        • 2015-03-31
        相关资源
        最近更新 更多