Presto JDBC 连接池创建错误“不支持禁用自动提交模式”
Posted
技术标签:
【中文标题】Presto JDBC 连接池创建错误“不支持禁用自动提交模式”【英文标题】:Presto JDBC Connection Pool Creation ERROR "Disabling auto-commit mode not supported" 【发布时间】: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>
【问题讨论】:
【参考方案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 的回答中所述)
【讨论】:
以上是关于Presto JDBC 连接池创建错误“不支持禁用自动提交模式”的主要内容,如果未能解决你的问题,请参考以下文章
在 prestosql/presto 容器中创建目录/模式/表