ОШИБКА создания пула соединений Presto JDBC Отключение режима автоматической фиксации не поддерживается

Я пытаюсь использовать 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 base 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>

person Prem Chand shah    schedule 26.03.2018    source источник


Ответы (2)


Вы отключаете режим автоматической фиксации в строке:

hikariDataSource.setAutoCommit(false);

пока ваш драйвер Presto не поддерживает эту операцию и выдаст исключение. Удалите setAutoCommit(false) из вашего @Bean. Это обсуждается в открытой проблеме № 3592.

Другим вариантом было бы обновить драйвер до более новой версии, так как на мастере автоматическая фиксация уже обработано в PrestoConnection. Последняя версия 0.197.

person Karol Dowbecki    schedule 26.03.2018

Недавно столкнулся с этой проблемой и наткнулся на это обсуждение в github. Я пробовал hikari CP и commons dbcp, а также пробовал autoCommit (true) и (false), но ничего не работало.

Каким-то образом в spring-jdbc я вижу несколько вызовов, происходящих с классом PrestoConnection, где на этот раз логическое значение autoCommit становится ложным, что приводит к этой ошибке. Решение

1) Переопределите созданные bean-компоненты, чтобы убедиться, что вы передаете действительные аргументы

2) Обновите до последней версии 0.197 presto-jdbc, у меня это сработало (как упоминалось в ответе Кароля)

person abstractKarshit    schedule 27.03.2018