无法将MySQLDataSource转换为java.sql.driver

时间:2016-02-17 14:48:51

标签: java mysql hikaricp

在这个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

我检查了我的项目中是否存在该类,确实如此。我真的不能想到这个原因。

我是Java的新手,所以我不知道我是否提供了足够的信息。如果情况并非如此,请说明。

3 个答案:

答案 0 :(得分:2)

DataSource不是Driver。请改用setDataSourceClassName()(我似乎还记得推荐它超过setDriverClassName())。

答案 1 :(得分:0)

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"
}

答案 2 :(得分:0)

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