错误档案2:MySQL8.0连接C3P0的问题
Posted 白墨是个程序猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误档案2:MySQL8.0连接C3P0的问题相关的知识,希望对你有一定的参考价值。
前言
大家好呀,我是 白墨,一个热爱学习与划水的矛盾体。
前两天在使用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条。
- 检查DBUTil的代码,虽然有点冗余,但是没有错误,能达到测试连接成功与否的目的。
- 检查xml配置文件的名字是否有错,以及是否与lib包同级。
名字为“c3p0-config.xml”,且都在src目录下一级,没有问题。
3. 检查jar包是否导入。
- 检查mysql连接java的jar的版本与数据库的版本是否一致。重点来了!
登录数据库查看数据库版本:mysql -u root -p
- 检查xml文件中的配置。检查后发现方框中的内容不适用于mysql8.0,需要修改。
框起来的两行修改后如下:
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/t2?useSSL=false&serverTimezone=UTC</property>
至此大功告成,成功连接数据库。特别感谢这篇博客给我的帮助!
结论
- 数据库驱动jar包要与数据库版本相对应;
- MySQL8.0以上的版本,URL连接需要添加时区参数。
- 8.0以上的驱动,驱动类选择时中间多了个
cj
,即com.mysql.cj.jdbc.Driver
好啦,本文到此结束!点个关注吧?点个关注吧?点个关注吧~
在公众号【白墨是个程序猿】回复【资料】获取我多年收集的各种教程、软件、电子书资源~ (
收藏了=学会了)
以上是关于错误档案2:MySQL8.0连接C3P0的问题的主要内容,如果未能解决你的问题,请参考以下文章
SQLyog连接MySQL8.0报2058错误的完美解决方法
[课本10.1.4]JDBC数据库连接池- C3P0数据源--通过构造方法创建数据源对象--通过配置文件创建数据源对象[推荐]