1. 程式人生 > 其它 >C3P0連線MySQL8.0 遇到的問題

C3P0連線MySQL8.0 遇到的問題

技術標籤:Javamysql資料庫javajdbc

一、C3P0連線MySQL8.0 遇到的問題

自己的MySQL版本是8.0.16,自己寫c3p0-config.xml的時候一直連線不上,報錯,後來查詢得知,MySQL8以上的驅動包需要使用新的,不能用之前的老版本的驅動包,同時也要更新C3P0的驅動包

我JAR包版本選擇的是:

c3p0-0.9.2-pre5.jar

mchange-commons-java-0.2.3.jar

mysql-connector-java-8.0.16.jar

c3p0-config.xml配置檔案是:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config> <default-config> <!-- 連線資料庫的4項基本引數 --> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/db_czjf?userSSL=false&amp;serverTimezone=UTC&amp;characterEncoding=utf-8&amp;
autoReconnect=true</property> <property name="user">root</property> <property name="password">root</property> <!-- 如果池中資料連線不夠時一次增長多少個 --> <property name="acquireIncrement">5</property> <!-- 初始化連線數 --> <property
name="initialPoolSize">
20</property> <!-- 最小連線受 --> <property name="minPoolSize">10</property> <!-- 最大連線數 --> <property name="maxPoolSize">20</property> <!-- -JDBC的標準引數,用以控制資料來源內載入的PreparedStatements數量 --> <property name="maxStatements">0</property> <!-- 連線池內單個連線所擁有的最大快取statements數 --> <property name="maxStatementsPerConnection">5</property> </default-config> </c3p0-config>

注意**&amp**的使用

二、要注意幾個問題:

1、版本不同包的路徑都不同,驅動路徑改變:
MySql8.0及以上對應的應用程式資料庫連結驅動包要更新為8.0版本,否則會報驅動異常。
mysql-connector-5.1.0版本下 com.mysql.jdbc.Driver

//連線資料驅動
	private static String driver="com.mysql.jdbc.Driver";
	//資料連線URL地址
	private static String url="jdbc:mysql://localhost:3306/qsx_register";
	//資料庫訪問使用者
	private static String user="root";
	//資料庫訪問密碼
	private static String password="root";

mysql-connector-8.0.0版本下 com.mysql.cj.jdbc.Driver

//連線資料驅動
	private static String driver="com.mysql.cj.jdbc.Driver";
	//資料連線URL地址
	private static String url="jdbc:mysql://localhost:3306/qsx_register?userSSL=false&serverTimezone=UTC";
	//資料庫訪問使用者
	private static String user="root";
	//資料庫訪問密碼
	private static String password="root";

2、多出了useSSL=false&serverTimezone=UTC程式碼
useSSL=false 8.0之前,連線資料庫是需要建立ssl連線的,而8.0之後不需要,所以需要關閉。

serverTimeZone=UTC(然後設定伺服器時區為UTC)

UTC是什麼?
CST可視為美國、澳大利亞、古巴或中國的標準時間。
CST可以為如下4個不同的時區的縮寫:

美國中部時間:Central Standard Time (USA) UT-6:00
澳大利亞中部時間:Central Standard Time (Australia) UT+9:30
中國標準時間:China Standard Time UT+8:00
古巴標準時間:Cuba Standard Time UT-4:00

三、com[email protected]解決方案

在配置c3p0通過配置檔案建立資料來源物件時,報錯資訊如題。
原因一:你的資料庫各類資訊是否正確,url,username,password是否正確。
原因二:是否將必需的jar包都放進工程中
原因三:你匯入的mysql的jar包和你設定的驅動資訊是否一致,若是5.x版本,是com.mysql.jdbc.Driver;6.x是com.mysql.cj.jdbc.Driver。這個應保持一致。
原因四:若是通過.xml檔案來配置資訊,注意!xml檔案必須放在src資料夾根目錄下,前面不能包裹住各種資料夾或包。即使你的主程式和.xml檔案在同一資料夾或包下也不行(除非該包是default package),因為主程式找配置檔案是在src根目錄下面去找!