摘要:在本文中,總結了開發過程中最為常見的幾種 MySQL 抛出的異常以及如何解決,包括高版本驅動的問題、時區配置問題、SSL 連接配接問題等,是一篇經驗總結貼。
在本文中,總結了開發過程中最為常見的幾種 MySQL 抛出的異常以及如何解決,包括高版本驅動的問題、時區配置問題、SSL 連接配接問題等,是一篇經驗總結貼,于我個人而言,這一篇足以解決目前項目中所有遇到的 MySQL 問題。同時,也希望本文能對 MySQL 資料庫初學者有一定的引導入門作用。
報錯如下:
對于此類錯誤,直接看釋義,一句話:JDBC 驅動抛出異常,連不上資料庫。
第一種,也是最為常見的一種錯誤:代碼配置的資料庫名稱或者密碼與本地資料庫不一緻,抛出異常。

如上圖所示,在配置檔案中,前面的 name 屬性是預設的,無需改變,對于使用者名,一般為 root,可以通過資料庫管理軟體直接檢視本地配置的情況,資料庫的密碼就是你自己設定的了。
修改配置檔案對應的名稱和密碼。
第二種常見的錯誤:使用 IDE(以 Eclipse 為例)導入的非本地項目檔案與本地的資料庫版本不比對。
舉個例子:你導入你 eclipse 中的項目裡面依賴的 jar 包是 8.0 的版本,而你本地安裝的是 5.0 的 MySQL 資料庫,自然報錯。
在你導入的項目中找到 Referenced Libraries,右擊滑鼠→Build Path→Configure Build Path…Remove 掉項目裡面依賴的 8.0 的 MySQL 驅動,Add 進你本地安裝的 5.0 的版本即可。
這個錯誤是由于 MySQL 版本更新之後,驅動包發生改變導緻的,新的驅動程式類是 com.mysql.cj.jdbc.Driver。
錯誤說明:不建議使用驅動類’com.mysql.jdbc.Driver’。新的驅動程式類是’com.mysql.cj.jdbc.Driver’,驅動程式是通過 SPI 自動注冊的,通常是不需要手動加載驅動類。
将 MySQL 資料庫 5.0 使用的驅動類com.mysql.jdbc.Driver改為com.mysql.cj.jdbc.Driver,驅動程式是通過 SPI 自動注冊的,通常是不需要手動加載驅動類。修改之後的配置檔案如下圖所示:
對于 MySQL 的驅動類,我們對每個版本進行檢視時,點開驅動的 jar 包可以直接檢視驅動是位于哪裡,例如 8.0 版本的就是 com.mysql.cj.jdbc.Driver,如下圖所示:
注意:MySQL 6.0 版本之後都需要配置時區。
我們可以利用時區支援,通過配置伺服器或 JDBC 驅動程式(通過 serverTimezone 配置屬性)以使用更具體的時區值。
配置檔案如下:
Java 資料庫連接配接使用 UTC 時區(世界标準時間),即 serverTimezone=UTC,而中原標準時間比 UTC 時間早8小時,即 UTC+08:00,如果我們直接使用 serverTimezone=UTC,寫入資料庫中的資料會提前 8 個小時。如果按照如下配置就會在資料庫中寫入資料相差 8 個小時:
我們可以修改設定 serverTimezone 為中原標準時間 GMT%2B8、上海時間 Asia/Shanghai 或者香港時間 Hongkong。
配置檔案如下即可:
另外在 MySQL 中的 my.ini 配置檔案也可以修改,此文章僅用于解決相應問題,故不多做較長的描述。
資料庫 URL 連接配接位址添加useSSL = false,适用于測試。
資料庫 URL 連接配接位址添加useSSL = true,并且提供伺服器的驗證證書。
通過對于 MySQL 抛出異常的幾種常見解決方式的總結,加深對于 MySQL 底層的了解。隻要是幹開發,錯誤是不斷地,要善于總結。同時,要充分掌握開發的底層原理,不同的版本疊代作為開發者要及時了解,不然永遠跟不上技術的發展。
本文分享自華為雲社群《MySQL 異常有這一篇就夠了!MySQL 抛出異常的幾種常見解決方式小結(時區問題、SSL 連接配接問題、8.0 高版本相容問題)》,原文作者:白鹿第一帥 。
點選關注,第一時間了解華為雲新鮮技術~