錯誤檔案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

好啦,本文到此結束!點個關注吧?點個關注吧?點個關注吧~

在公衆號【白墨是個程序猿】回覆【資料】獲取我多年收集的各類教程、軟件、電子書資源~ (收藏了=學會了

相關文章
相關標籤/搜索