MySQL8使用c3p0数据池连接时出现如下错误:
解决方法如下:(仅供参考,我就是这么解决的)
使用数据池连接数据库
1.c3p0 连接数据库
本人用的是mysql8,jdbc驱动用的是mysql-connector-java-8.0.19.jar
下载地址:https://dev.mysql.com/downloads/connector/j/
加载完jdbc驱动复制到当前项目下,习惯上是在当前项目下创建lib
文件夹存放jar
包
连接方式一
网址也和mysql5有些不同:jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC
获取Class实例也有点不同:"com.mysql.cj.jdbc.Driver
(详见下面代码)
package com.atguigu.test;
import java.sql.Connection;
import java.sql.SQLException;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class c3p0Test1 {
//使用 c3p0 连接方式二
@Test
public void test1() throws Exception{
ComboPooledDataSource cpds = new ComboPooledDataSource("mysqlc3p0");
Connection conn = cpds.getConnection();
System.out.println(conn);
}
// 使用 c3p0 连接方式一
@Test
public void test() throws Exception {
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
cpds.setJdbcUrl(
"jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC");
cpds.setUser("root");
cpds.setPassword("111111");
cpds.setInitialPoolSize(10);
cpds.setAcquireIncrement(5);
Connection conn = cpds.getConnection();
System.out.println(conn);
}
}
连接方式二:
尤其注意:jdbcUrl 网址问题,弄不好就会死锁问题。
配置文件放在src根目录下。
配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="mysqlc3p0">
<!-- 连接数据库的四个必须字符串 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">111111</property>
<!-- 若连接池中的连接用尽,一次性获取几个连接 -->
<property name="acquireIncrement">2</property>
<!-- 连接池的初始连接个数 -->
<property name="initialPoolSize">5</property>
<!-- 连接池中最小连接个数 -->
<property name="minPoolSize">3</property>
<!-- 连接池中最多连接个数 -->
<property name="maxPoolSize">10</property>
<!-- 连接池中最多管理 Statement 的个数 -->
<property name="maxStatements">5</property>
<!-- 每个连接中最多管理 Statement 的个数 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
以此记录,弄了好久。