我尝试切换到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。
答案 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");