HikariCP - нет подходящей ошибки драйвера

Я попытался переключиться на Hikari-CP для java 1.6/1.7, но получаю следующую ошибку:

Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:278) ~[na:1.7.0_45]
    at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:52) ~[HikariCP-java6-2.3.5.jar:na]
    ... 82 common frames omitted

Я использую БД Oracle.


person Neeraj    schedule 02.04.2015    source источник


Ответы (4)


Мне кажется, что jar-файл драйвера не виден в пути к классам или драйвер не является саморегистрирующимся драйвером. Какую базу данных вы используете? Пожалуйста, добавьте больше деталей к вашему вопросу.

person brettw    schedule 03.04.2015

Причиной послужила эта строчка из документации.

При использовании этого свойства со «старыми» драйверами вам также может понадобиться установить свойство driverClassName, но сначала попробуйте без него.

В ту минуту, когда я явно настроил driverClassName, он начал работать.

person Neeraj    schedule 03.04.2015
comment
Рад, что ты разобрался. Я выделю этот текст жирным шрифтом на странице проекта. - person brettw; 06.04.2015
comment
У меня была такая же проблема. Странно то, что мой код отлично работает в eclipse, но не работает как веб-приложение tomcat. Вызов HikariConfig.setDriverClassName() заставил его работать во всех ситуациях. - person kane; 22.06.2017

  • убедитесь, что ожидаемый JdbcDriver доступен

Если вы используете артефакт jar, вы можете проверить это с помощью следующей команды в Linux/MacOS (пример показывает драйвер mysql jdbc)

$ jar -tvf your-lovely.jar  | grep "com/mysql/cj/jdbc/Driver"
   733 Sun Mar 25 07:00:36 PDT 2018 com/mysql/cj/jdbc/Driver.class
  • Если JdbcDriver доступен, но вы по-прежнему получаете ошибку No suitable driver, зарегистрируйте JdbcDriver.

Пример использования HicariConfig# setDriverClassName,

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.SQLException;

class ConnectionPool {

    private HikariDataSource ds = new HikariDataSource(getConfig());

    private HikariConfig getConfig() {

        HikariConfig config = new HikariConfig();

        config.setJdbcUrl("jdbc:mysql://localhost:3306/lovely_database_name");
        config.setUsername("root");
        config.setPassword("root");
        config.setDriverClassName("com.mysql.cj.jdbc.Driver"); //alternative is Class.forName("com.mysql.cj.jdbc.Driver")

        config.addDataSourceProperty("cachePrepStmts", "true");
        config.addDataSourceProperty("prepStmtCacheSize", "250");
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

        return config;
    }

    Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}
person prayagupd    schedule 26.06.2018

Если вы уверены, что jar-файл драйвера и другие зависимости установлены, и только что вы получили эту ошибку, попробуйте создать соединение таким образом.

config.setJdbcUrl(JDBC_URL);
config.setUsername(JDBC_USERNAME);
config.setPassword(JDBC_PASSWORD);
config.setDriverClassName(JDBC_DRIVERCLASSNAME);

HikariCp выглядит так.

Если вы попытаетесь запустить класс драйвера через свойство, это не сработает, и вы получите сообщение об ошибке, связанное с драйвером.

props.addDataSourceProperty("dataSourceClassName", "com.mysql.cj.jdbc.Driver");
person Atul    schedule 15.06.2020