首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Presto JDBC连接池创建错误“不支持禁用自动提交模式”

Presto JDBC连接池创建错误“不支持禁用自动提交模式”
EN

Stack Overflow用户
提问于 2018-03-27 03:30:11
回答 2查看 1.1K关注 0票数 3

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

代码语言:javascript
复制
@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;
}

在我的服务类中自动挂载数据源时,我得到了这个错误:

代码语言:javascript
复制
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 base 1.5.10.RELEASE

代码语言:javascript
复制
    <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>
EN

回答 2

Stack Overflow用户

发布于 2018-03-27 03:37:38

您正在禁用以下行中的自动提交模式:

代码语言:javascript
复制
hikariDataSource.setAutoCommit(false);

而您的Presto驱动程序不支持此操作,并将抛出异常。从@Bean中卸下setAutoCommit(false)。在open issue #3592中对此进行了讨论。

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

票数 2
EN

Stack Overflow用户

发布于 2018-03-27 14:11:31

最近遇到了这个问题,偶然发现了github中关于this的讨论。我尝试了hikari CP和commons dbcp,也尝试了autoCommit (true)和(false),但似乎都不起作用。

不知何故,在spring-jdbc中,我看到PrestoConnection类发生了多次调用,其中布尔autoCommit作为false出现,导致了这个错误。解决方案

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

2)升级到最新的0.197版本-jdbc,它对我有效(正如Karol在回答中提到的)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49499208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档