无法将 MySQLDataSource 转换为 java.sql.driver
Can't cast MySQLDataSource to java.sql.driver
在这个Java项目中,我想尝试与HikariCP一起工作,看看我是否愿意。
起初看起来很简单,但是当我实际尝试 运行 我的应用程序时,它出错了。下面的代码是我的DatabasePool.java
中的一个函数
HikariConfig configuration = new HikariConfig();
configuration.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/testdb");
configuration.addDataSourceProperty("serverName","127.0.0.1");
configuration.addDataSourceProperty("port", 3306);
configuration.addDataSourceProperty("databaseName", "testdb"));
configuration.addDataSourceProperty("user", "root");
configuration.addDataSourceProperty("password", "123");
configuration.setDriverClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
this.database = new HikariDataSource(configuration);
return true;
并且出于某种原因,当它变为 运行 时,我返回以下错误:
[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-0 - is starting.
[main] WARN com.zaxxer.hikari.util.DriverDataSource - Registered driver with driverClassName=org.mariadb.jdbc.MySQLDataSource was not found, trying direct instantiation.
[main] WARN com.zaxxer.hikari.util.DriverDataSource - Could not instantiate instance of driver class org.mariadb.jdbc.MySQLDataSource, trying JDBC URL resolution
java.lang.ClassCastException: org.mariadb.jdbc.MySQLDataSource cannot be cast to java.sql.Driver
我检查了 class 是否存在于我的项目中,确实如此。我实在想不出这是什么原因。
我是 Java 的新手,所以我不知道我是否在问题中提供了足够的信息。如果不是,请说明。
DataSource
不是 Driver
。改为使用 setDataSourceClassName()(我似乎记得它被推荐超过 setDriverClassName()
)。
import ru.steklopod.repositories.ConnectionAccesNamesStore._
def init(): Unit = {
val dataSource: DataSource = {
val ds = new HikariDataSource()
ds.setDriverClassName(DRIVER_MARIA_DB)
ds.setJdbcUrl(URL_MARIA)
ds.setPassword(PSWRD_MARIA)
ds.setUsername(LOGIN_MARIA)
ds
}
ConnectionPool.singleton(new DataSourceConnectionPool(dataSource))
}
object ConnectionAccesNamesStore {
currentSchema=" + SHEMA_NAME
val URL_MARIA = "jdbc:mariadb://127.0.0.1:3306/test"
val DRIVER_MARIA_DB = "org.mariadb.jdbc.Driver"
var LOGIN_MARIA = "root"
val PSWRD_MARIA = "root"
}
在 spring boot 应用程序中使用以下配置,在 application.yml.
中使用 YAML 配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: root
在这个Java项目中,我想尝试与HikariCP一起工作,看看我是否愿意。
起初看起来很简单,但是当我实际尝试 运行 我的应用程序时,它出错了。下面的代码是我的DatabasePool.java
HikariConfig configuration = new HikariConfig();
configuration.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/testdb");
configuration.addDataSourceProperty("serverName","127.0.0.1");
configuration.addDataSourceProperty("port", 3306);
configuration.addDataSourceProperty("databaseName", "testdb"));
configuration.addDataSourceProperty("user", "root");
configuration.addDataSourceProperty("password", "123");
configuration.setDriverClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
this.database = new HikariDataSource(configuration);
return true;
并且出于某种原因,当它变为 运行 时,我返回以下错误:
[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-0 - is starting.
[main] WARN com.zaxxer.hikari.util.DriverDataSource - Registered driver with driverClassName=org.mariadb.jdbc.MySQLDataSource was not found, trying direct instantiation.
[main] WARN com.zaxxer.hikari.util.DriverDataSource - Could not instantiate instance of driver class org.mariadb.jdbc.MySQLDataSource, trying JDBC URL resolution
java.lang.ClassCastException: org.mariadb.jdbc.MySQLDataSource cannot be cast to java.sql.Driver
我检查了 class 是否存在于我的项目中,确实如此。我实在想不出这是什么原因。
我是 Java 的新手,所以我不知道我是否在问题中提供了足够的信息。如果不是,请说明。
DataSource
不是 Driver
。改为使用 setDataSourceClassName()(我似乎记得它被推荐超过 setDriverClassName()
)。
import ru.steklopod.repositories.ConnectionAccesNamesStore._
def init(): Unit = {
val dataSource: DataSource = {
val ds = new HikariDataSource()
ds.setDriverClassName(DRIVER_MARIA_DB)
ds.setJdbcUrl(URL_MARIA)
ds.setPassword(PSWRD_MARIA)
ds.setUsername(LOGIN_MARIA)
ds
}
ConnectionPool.singleton(new DataSourceConnectionPool(dataSource))
}
object ConnectionAccesNamesStore {
currentSchema=" + SHEMA_NAME
val URL_MARIA = "jdbc:mariadb://127.0.0.1:3306/test"
val DRIVER_MARIA_DB = "org.mariadb.jdbc.Driver"
var LOGIN_MARIA = "root"
val PSWRD_MARIA = "root"
}
在 spring boot 应用程序中使用以下配置,在 application.yml.
中使用 YAML 配置spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: root