为什么我的HikariCP springboot会抛出此异常?

时间:2017-11-21 02:29:52

标签: java jdbc hikaricp

这是我的sapplication.yml

spring:

数据源:    键入:com.zaxxer.hikari.HikariDataSource     初级:

  serverName: localhost
  portNumber: 3306
  databaseName: ccoee
  username: root
  password:  root
  dataSourceClassName: com.mysql.cj.jdbc.Driver
secondary:
  serverName: localhost
  portNumber: 3306
  databaseName: ccoee
  username: root
  password:  root
  dataSourceClassName: com.mysql.cj.jdbc.Driver

这是我的首发:

ApplicationContext applicationContext = SpringApplication.run(
            TransqlApplication.class, args);
    DataSource dataSource = applicationContext.getBean(DataSource.class);
    System.out.println("datasource is :" + dataSource);
    //检查数据库是否是hikar数据库连接池
    if (!(dataSource instanceof HikariDataSource)) {
        System.err.println(" Wrong datasource type :"
                + dataSource.getClass().getCanonicalName());
        System.exit(-1);
    }
    try {
        Connection connection = dataSource.getConnection();
        ResultSet rs = connection.createStatement()
                .executeQuery("SELECT  1");
        if (rs.first()) {

            System.out.println("Connection OK!");
        } else {
            System.out.println("Something is wrong");
        }
        // connection.close();
        // System.exit(0);

    } catch (SQLException e) {
        System.out.println("FAILED");
        e.printStackTrace();
        System.exit(-2);
        // TODO: handle exception
    }

这是我的例外:

datasource is :HikariDataSource (null)

2017-11-21 10:10:3​​3.126线程"主要" java.lang.RuntimeException:java.lang.ClassCastException:无法将com.mysql.cj.jdbc.Driver强制转换为javax.sql.DataSource   信息来自com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:93) 676 --- at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:338)  [main] at com.zaxxer.hikari.pool.PoolBase。(PoolBase.java:117) Com.zaxxer.hikari.HikariDataSource,com.zaxxer.hikari.pool.HikariPool。(HikariPool.java:109) :at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:97)  HikariPool-1 - 开始......     在com.mycjj.transql.TransqlApplication.main(TransqlApplication.java:51) 引起:java.lang.ClassCastException:无法将com.mysql.cj.jdbc.Driver转换为javax.sql.DataSource     在java.lang.Class.cast(Class.java:3369)     在com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:82)     ......还有5个 2017-11-21 10:10:3​​4.204 ERROR 676 --- [pool-1-thread-1] com.mycjj.transql.GetSql:数据库连接异常,请检查地址/账号/密码是否正确

1 个答案:

答案 0 :(得分:1)

JDBC驱动程序类不是javax.sql.DataSource。您不应该使用dataSourceClassName属性,请使用driverClassName属性。

此外,com.mysql.cj.jdbc.Driver是MySQL Connector / J 6.0(已被放弃)或8.0(仍在开发中)的开发版本的类名。它 - 在这个时候 - 不是发布的版本,你不应该在生产中使用它。