错误档案2:MySQL8.0链接C3P0的问题

前言

你们好呀,我是 白墨,一个热爱学习与划水的矛盾体。java

前两天在使用C3P0链接池时遇到问题,运行测试用的DBUTlis类抛出了异常,可耽误了我好些时间!记录一下差错通过。mysql


问题出现

异常以下:web

java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.sql

项目配置以下: 首先是测试用的DBUTil类:数据库

public class DBUtil {
    static DataSource ds = new ComboPooledDataSource();

    public static Connection getConn() throws SQLException {
        return ds.getConnection();
    }

    public static DataSource getDataSource() {
        return ds;
    }

    public static void main(String[] args) {

        try {
            System.out.println(getConn());
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
复制代码

而后是jar包:markdown

jar包


解决方法

咱们先无论上面那行报错的内容了,所有都检查一遍。==能够先看四、5条。==svg

  1. 检查DBUTil的代码,虽然有点冗余,可是没有错误,能达到测试链接成功与否的目的。
  2. 检查xml配置文件的名字是否有错,以及是否与lib包同级。

c3p0-config.xml

名字为“c3p0-config.xml”,且都在src目录下一级,没有问题。 3. 检查jar包是否导入。oop

jar包

  1. 检查mysql链接java的jar的版本与数据库的版本是否一致。重点来了!

登陆数据库查看数据库版本:mysql -u root -p学习

mysql版本

  1. 检查xml文件中的配置。检查后发现方框中的内容不适用于mysql8.0,须要修改。

框起来的两行修改后以下:测试

<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/t2?useSSL=false&amp;serverTimezone=UTC</property>
复制代码

至此大功告成,成功链接数据库。特别感谢这篇博客给个人帮助!


结论

  1. 数据库驱动jar包要与数据库版本相对应;
  2. MySQL8.0以上的版本,URL链接须要添加时区参数。
  3. 8.0以上的驱动,驱动类选择时中间多了个cj,即com.mysql.cj.jdbc.Driver

好啦,本文到此结束!点个关注吧?点个关注吧?点个关注吧~

在公众号【白墨是个程序猿】回复【资料】获取我多年收集的各类教程、软件、电子书资源~ (收藏了=学会了