HikariCP - 没有合适的驱动程序错误

时间:2015-04-02 15:07:54

标签: hikaricp

我尝试切换到java 1.6/1.7 Hikari-CP ,但我收到以下错误:

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 DB。

4 个答案:

答案 0 :(得分:3)

文档中的这一行是原因。

将此属性与“旧”驱动程序一起使用时,您可能还需要设置driverClassName属性,但首先不使用它。

我确实设置了driverClassName,它开始工作。

答案 1 :(得分:2)

我听起来在类路径中看不到驱动程序jar,或者驱动程序不是自注册驱动程序。你用的是什么数据库?请在您的问题中添加更多详细信息。

答案 2 :(得分:0)

  • 确保预期的JdbcDriver可用

如果您正在运行jar工件,则可以在Linux / MacOS中使用以下命令进行验证,(示例显示mysql jdbc Driver

$ 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();
    }
}

答案 3 :(得分:0)

如果确定驱动程序jar和其他依赖项到位并且仅收到此错误,则尝试以这种方式建立连接。

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

HikariCp看起来像这些属性。

如果您尝试通过属性服务drsriver clss,它将无法正常工作,并且您将收到与驱动程序有关的错误。

props.addDataSourceProperty("dataSourceClassName", "com.mysql.cj.jdbc.Driver");