MySQL 異常:這一篇就夠了,MySQL 拋出異常的幾種常見解決方式小結

Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database! 幾種解決方式小結

文章目錄

    • Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database! 幾種解決方式小結
  • 前言
  • 一、代碼配置的數據庫名稱或者密碼與本地數據庫不一致
    • 1.1、錯誤產生描述
    • 1.2、解決方式
  • 二、導入的非本地項目文件與本地的數據庫版本不匹配
    • 2.1、錯誤產生描述
    • 2.2、解決方式
  • 三、MySQL 高版本配置加載驅動類包出錯問題(以 MySQL 8.0 為例)
    • 3.1、錯誤產生描述
    • 3.2、解決方式
    • 3.3、MySQL 不同版本的驅動類如何查看
  • 四、數據庫連接字符串高版本配置出錯(時區問題)
    • 4.1、錯誤產生描述
    • 4.2、解決方式
  • 五、為什么數據庫中寫入數據相差 8 個小時?
    • 5.1、錯誤產生描述
    • 5.2、解決方式
  • 六、SSL 連接問題
    • 6.1、錯誤產生描述
    • 6.2、解決方式
  • 總結


前言

在本文中,我總結了開發過程中最為常見的幾種 MySQL 拋出的異常以及如何解決,包括高版本驅動的問題、時區配置問題、SSL 連接問題等,是一篇經驗總結貼,于我個人而言,這一篇足以解決目前項目中所有遇到的 MySQL 問題。同時也希望本文能對 MySQL 數據庫初學者有一定的引導入門作用。

在這里插入圖片描述


報錯如下:

Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database! 

對于此類錯誤,直接看釋義,一句話:JDBC 驅動拋出異常,連不上數據庫。

一、代碼配置的數據庫名稱或者密碼與本地數據庫不一致

1.1、錯誤產生描述

第一種,也是最為常見的一種錯誤:代碼配置的數據庫名稱或者密碼與本地數據庫不一致,拋出異常。

在這里插入圖片描述
如上圖所示,在配置文件中,前面的 name 屬性是默認的,無需改變,對于用戶名,一般為 root,可以通過數據庫管理軟件直接查看本地配置的情況,數據庫的密碼就是你自己設置的了。

1.2、解決方式

修改配置文件對應的名稱和密碼,具體如下圖所示:

在這里插入圖片描述

二、導入的非本地項目文件與本地的數據庫版本不匹配

2.1、錯誤產生描述

第二種常見的錯誤:使用 IDE(以 Eclipse 為例)導入的非本地項目文件與本地的數據庫版本不匹配。

舉個例子:你導入你 eclipse 中的項目里面依賴的 jar 包是 8.0 的版本,而你本地安裝的是 5.0 的 MySQL 數據庫,自然報錯。

2.2、解決方式

在你導入的項目中找到 Referenced Libraries,右擊鼠標→Build Path→Configure Build Path…Remove 掉項目里面依賴的 8.0 的 MySQL 驅動,Add 進你本地安裝的 5.0 的版本即可,具體如下圖所示:

在這里插入圖片描述
在這里插入圖片描述

三、MySQL 高版本配置加載驅動類包出錯問題(以 MySQL 8.0 為例)

這個錯誤是由于 MySQL 版本更新之后,驅動包發生改變導致的,新的驅動程序類是 com.mysql.cj.jdbc.Driver。

3.1、錯誤產生描述

報錯如下:

Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

錯誤說明:不建議使用驅動類’com.mysql.jdbc.Driver’。新的驅動程序類是’com.mysql.cj.jdbc.Driver’,驅動程序是通過 SPI 自動注冊的,通常是不需要手動加載驅動類。

3.2、解決方式

將 MySQL 數據庫 5.0 使用的驅動類com.mysql.jdbc.Driver改為com.mysql.cj.jdbc.Driver,驅動程序是通過 SPI 自動注冊的,通常是不需要手動加載驅動類。修改之后的配置文件如下圖所示:

在這里插入圖片描述

<!-- 加載數據庫驅動 -->
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>

3.3、MySQL 不同版本的驅動類如何查看

對于 MySQL 的驅動類,我們對每個版本進行查看時,點開驅動的 jar 包可以直接查看驅動是位于哪里,例如 8.0 版本的就是 com.mysql.cj.jdbc.Driver,如下圖所示:

在這里插入圖片描述
在這里插入圖片描述

四、數據庫連接字符串高版本配置出錯(時區問題)

注意:MySQL 6.0 版本之后都需要配置時區。

4.1、錯誤產生描述

報錯如下:

2020-01-14 00:45:30,876 ERROR [DruidDataSource.java:616] : init datasource error java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

錯誤說明:服務器時區值“????±××?±?無法識別或代表一個以上的時區。

4.2、解決方式

我們可以利用時區支持,通過配置服務器或 JDBC 驅動程序(通過 serverTimezone 配置屬性)以使用更具體的時區值。

配置文件如下:

<!-- 數據庫連接字符串 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&amp;characterEncoding=utf-8"></property>

五、為什么數據庫中寫入數據相差 8 個小時?

5.1、錯誤產生描述

Java 數據庫連接使用 UTC 時區(世界標準時間),即 serverTimezone=UTC,而北京時間比 UTC 時間早8小時,即 UTC+08:00,如果我們直接使用 serverTimezone=UTC,寫入數據庫中的數據會提前 8 個小時。如果按照如下配置就會在數據庫中寫入數據相差 8 個小時:

<!-- 數據庫連接字符串 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&amp;characterEncoding=utf-8"></property>

5.2、解決方式

我們可以修改設置 serverTimezone 為北京時間 GMT%2B8、上海時間 Asia/Shanghai 或者香港時間 Hongkong。

配置文件如下即可:

<!-- 數據庫連接字符串 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&amp;characterEncoding=utf-8"></property>

另外在 MySQL 中的 my.ini 配置文件也可以修改,此文章僅用于解決相應問題,故不多做詳細描述。

六、SSL 連接問題

6.1、錯誤產生描述

報錯如下:

Sun Oct 14 00:45:30 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

錯誤說明:不建議在沒有服務器身份驗證的情況下建立 SSL 連接。根據 MySQL 5.5.45+,5.6.26+ 和 5.7.6+ 的 SSL 連接要求,如果未設置連接方式,則默認情況下必須建立 SSL 連接。對于不使用 SSL 的現有應用程序,服務器的驗證證書屬性設置為“false”。您需要通過設置useSSL = false來顯式禁用 SSL,或者設置useSSL = true并提供服務器的驗證證書。

6.2、解決方式

  1. 數據庫 URL 連接地址添加useSSL = false,適用于測試。
  2. 數據庫 URL 連接地址添加useSSL = true,并且提供服務器的驗證證書。

配置文件如下即可:

<!-- 數據庫連接字符串 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?useSSL=false&amp;serverTimezone=GMT%2B8&amp;characterEncoding=utf-8"></property>

總結

通過對于 MySQL 拋出異常的幾種常見解決方式的總結,加深對于 MySQL 底層的了解。只要是干開發,錯誤是不斷地,要善于總結。同時,要充分掌握開發的底層原理,不同的版本迭代作為開發者要及時了解,不然永遠跟不上技術的發展。

在這里插入圖片描述


我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530649.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530649.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530649.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vnc用戶名 查看linux_vnc用戶名未被識別,5步教你如何解決vnc用戶名未被識別

在進行vnc使用時&#xff0c;很多小伙伴會出現用戶名未被識別的情況&#xff0c;那如何解決vnc用戶名未被識別呢&#xff1f;咱接著往下看。使用工具&#xff1a;IIS7服務器管理工具主程序界面圖&#xff1a;官網地址&#xff1a;IIS7服務器管理工具作為IIS7服務器管理工具&…

IntelliJ IDEA 亂碼:全網最全 4 種方法完美解決 IntelliJ IDEA 控制臺中文亂碼問題

文章目錄前言一、修改當前 Web 項目 Tomcat Server 的虛擬機輸出選項二、修改 IntelliJ IDEA 全局編碼、項目編碼、屬性文件編碼三、IntelliJ IDEA 中自定義虛擬機選項四、直接修改 IntelliJ IDEA 配置文件的編碼信息五、修改成功亂碼問題解決總結前言 IntelliJ IDEA 如果不進行…

JVM 調優 1:“精通 JVM 調優,有過 JVM 調優經驗”簡歷敢寫嗎?薪資漲 5k 的技巧

文章目錄前言一、部分大廠對于 JVM GC 的面試題1.1、百度1.2、順豐1.3、京東1.4、淘寶1.5、阿里、蘑菇街二、Garbage Collectors&#xff08;GC&#xff09;作何使用三、GC 的十種類型四、JVM 的版本參數信息4.1、查看 Java 啟動時所有默認的命令行參數4.2、查看 Java 啟動時 G…

ip地址合不合法怎么看_電子印章合不合法?兩部門再發意見認定

近日&#xff0c;最高法、國家發改委聯合發布 《關于為新時代加快完善社會主義市場經濟體制提供司法服務和保障的意見》以助力經濟高質量發展、建設高標準市場體系為出發點和落腳點&#xff0c;從市場主體、產權保護、公平交易、市場秩序、民生保障、服務開放、高效解紛等七個方…

JVM 調優 2:GC 如何判斷對象是否為垃圾,三色標記算法應用原理及存在的問題?

文章目錄前言一、如何判斷一個對象是否為垃圾&#xff1f;1.1、reference count&#xff08;引用計數&#xff09;1.2、reference count&#xff08;引用計數&#xff09;存在的問題二、Root Searching&#xff08;根可達算法或根搜索算法&#xff09;2.1、Root Searching 釋義…

班尼機器人怎么拆_博鼎建筑科技外墻錯臺打磨機器人和外墻螺桿洞封堵機器人—自升造樓平臺1+N執行器...

繼上期的混凝土整平機和智能噴淋養護系統&#xff0c;本期給大家介紹的是實際應用在自升造樓平臺外墻環軌車上的外墻錯臺打磨機器人和外墻螺桿洞封堵機器人。外墻錯臺打磨機器人傳統外墻錯臺處理&#xff0c;需要人工拿鑿具對外墻面錯臺進行鑿平處理。鑿具重、操作人工容易疲勞…

架構師基礎必備:“腹有詩書氣自華”,馳騁一線大廠不是夢,抓緊收藏

文章目錄前言一、軟件1.1、何為軟件&#xff1f;1.2、計算機軟件的分類1.2.1、系統軟件1.2.2、應用軟件1.3、軟件系統體系結構1.3.1、C/S 結構&#xff08;桌面應用程序&#xff09;1.3.2、B/S 結構&#xff08;Web 應用程序&#xff09;1.3.3、Web 服務器與數據庫服務器1.3.4、…

JDK 7-JDK 21:Oracle Java SE 支持路線圖/Oracle Java SE Support Roadmap 持續更新

文章目錄前言一、Oracle Java SE 產品版本二、Java SE 8 的公共更新結束三、參考文檔總結前言 幾十年來&#xff0c;Java 生態系統已經成功地經歷了這個過程&#xff0c;經歷了十次主要的平臺修訂。長期強大的向后兼容性保護了整個生態系統的投資。同時&#xff0c;隨著時間的推…

multisim中輕觸開關在哪_現貨供應輕觸開關|品質確保|廠家直銷

輕觸開關是現今社會生活當中不可或缺的電子元器件之一&#xff0c;那么大家在使用的過程當中是否注意到一些細節問題。首先&#xff0c;我們要注意產品的放置要盡量避免接觸腐蝕性氣體以及過于潮濕的環境&#xff0c;這樣很容易造成產品的損壞&#xff0c;減少輕觸開關的使用壽…

DDoS 攻擊與防護(一):如何識別 DDoS 攻擊?DDoS 防護 ADS 服務有哪些?

文章目錄前言一、什么是 DDoS 防護 ADS&#xff1f;1.1、什么是 DDoS 攻擊&#xff1f;1.2、如何識別 DDoS 攻擊&#xff1f;1.3、從 Web 訪問流程分析 DDoS 攻擊1.4、DDoS 攻擊類型二、DDoS 防護 ADS 介紹2.1、Anti-DDoS 流量清洗2.2、DDoS 原生高級防護2.3、DDoS 高防三、DDo…

收藏功能_六款多功能榻榻米,裝完你家會大一半!超實用,收藏

原標題&#xff1a;六款多功能榻榻米&#xff0c;裝完你家會大一半&#xff01;超實用&#xff0c;收藏當今社會城市的生活壓力大&#xff0c;在外日夜打拼&#xff0c;回到家中只想做一個慵懶派&#xff0c;隨性舒適的榻榻米&#xff0c;功能樣式豐富&#xff0c;能讓你徹底釋…

混凝土墻開洞_新樂專業混凝土切割報價適中

新樂專業混凝土切割報價適中粘碳纖維加固&#xff0c;屋頂加層。本公司采用目前的鋼筋混凝土切割結構分離和水鉆排孔技術。真正實現對不同規格和形狀的橋梁、道路、煙囪、建筑立柱、鋼筋砼墻體、磚混結構墻體、建筑大梁等建筑物、構筑物實施無損切割(傳統的建筑改造或局部拆除分…

class觸發后讓另一個class加樣式_Bootstrap的按鈕組樣式

將一系列的.btn包裹在.btn-group內&#xff0c;并使用我們提供的插件&#xff0c;可以實現選擇按鈕、選取塊狀區的行為功能。<div class"row mt-5 d-block"><div class"btn-group"><button class"btn btn-primary">Left</b…

碼云怎么創建公開的倉庫_使用碼云或GitHub搭建簡單的個人網站(補充hexo搭建博客)...

使用碼云或GitHub搭建個人網站碼云&#xff1a;1、新建一個倉庫路徑名會影響你的個人網站的網址(自行修改)&#xff0c;開源(公開)&#xff0c;其他默認我們點擊創建2、進入倉庫后&#xff0c;我們新建一個文件3、文件名為index.html&#xff0c;再寫入我們的html代碼然后“提交…

bsp模型適用于圖計算_【論文解讀】目標檢測之RFBnet模型

原創聲明&#xff1a;本文為 SIGAI 原創文章&#xff0c;僅供個人學習使用&#xff0c;未經允許&#xff0c;不能用于商業目的。其它機器學習、深度學習算法的全面系統講解可以閱讀《機器學習-原理、算法與應用》&#xff0c;清華大學出版社&#xff0c;雷明著&#xff0c;由SI…

win10雷電3接口驅動_“雷電3”接口知識大科普

近年來部分高端筆記本電腦在接口上會采用一種叫“雷電3”的新接口。今天小編就為大家解讀一下“雷電3”接口的特性。最早的雷電接口雷電接口是由Intel開發定制的、接口類型為mini DP&#xff0c;在雷電3接口出來之前&#xff0c;雷電1和雷電2都是作為在蘋果MAC上使用的&#xf…

springboot怎么返回404_深度分析:SpringBoot異常捕獲與封裝處理,看完你學會了嗎?...

簡介日常開發過程中&#xff0c;難免有的程序會因為某些原因拋出異常&#xff0c;而這些異常一般都是利用try &#xff0c;catch的方式處理異常或者throw&#xff0c;throws的方式拋出異常不管。這種方法對于程序員來說處理也比較麻煩&#xff0c;對客戶來說也不太友好&#xf…

新生成長記;關于zzulioj1056,幸運數字

剛剛接觸代碼的我&#xff0c;對計算機愈來愈好奇&#xff0c;開學的兩個月&#xff0c;幾乎沒看書只顧著做題&#xff0c;當然&#xff0c;不會就百度&#xff0c;或者看大佬的博客&#xff0c;這些都是好東西&#xff0c;實在看不懂的&#xff0c;就拿著跑去問學長&#xff0…

獲取form表單_【第1535期】前端 Form 的表單的一個通用解決方案

前言今日早讀文章由阿里布達投稿分享。布達&#xff0c;Alibaba Fusion項目組的。花名潕量。主要專注在設計系統、組件、可視化搭建這個領域正文從這開始&#xff5e;&#xff5e;Fusion Next - Form 表單解決方案前端的Form 表單主要用于解決數據獲取、數據校驗、數據賦值 這三…

c語言表白用代碼(1)

不多說&#xff0c;直接上代碼&#xff0c;有用拿走&#xff0c;侵權立刪。 希望大家盡早找到自己的另一半。 #include <stdio.h> #include <math.h> #include <stdlib.h> #define I 20 #define R 340 #include <string.h> int main() {char answer[4…