4

我尝试切换到Hikari-CPjava 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 数据库。

4

4 回答 4

5

文档中的这一行是原因。

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

在我明确设置 driverClassName 的那一刻,它就开始工作了。

于 2015-04-03T20:57:32.277 回答
4
  • 确保预期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();
    }
}
于 2018-06-26T02:33:27.307 回答
2

I sounds like the driver jar is not visible in the classpath, or the driver is not a self-registering driver. What database are you using? Please add more detail to your question.

于 2015-04-03T06:01:39.863 回答
1

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

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

HikariCp 看起来像这样。

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

props.addDataSourceProperty("dataSourceClassName", "com.mysql.cj.jdbc.Driver");
于 2020-06-15T17:18:17.173 回答