关于后端:错误档案2MySQL80连接C3P0的问题

37次阅读

共计 1160 个字符,预计需要花费 3 分钟才能阅读完成。

>>> 跳过 BB,空降注释 <<<

前言

大家好呀,我是 白墨,一个酷爱学习与划水的矛盾体。

前两天在应用 C3P0 连接池时遇到问题,运行测试用的 DBUTlis 类抛出了异样,可耽搁了我好些工夫!记录一下过错通过。


问题呈现

异样如下:

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

我的项目配置如下:
首先是测试用的 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 包:


解决办法

咱们先不论下面那行报错的内容了,全副都查看一遍。== 能够先看 4、5 条。==

  1. 查看 DBUTil 的代码,尽管有点冗余,然而没有谬误,能达到测试连贯胜利与否的目标。
  2. 查看 xml 配置文件的 名字是否有错 ,以及是否 与 lib 包 同级。

名字为“c3p0-config.xml”,且都在 src 目录下一级,没有问题。

  1. 查看 jar 包是否导入。

  1. 查看 mysql 连贯 java 的 jar 的版本与数据库的 版本是否统一。重点来了!
    登录数据库查看数据库版本:mysql -u root -p

  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

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

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

正文完
 0