亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

分析MySQL拋出異常的幾種常見解決方式

 更新時間:2021年05月18日 15:00:26   作者:華為云開發(fā)者社區(qū)  
在本文中,總結(jié)了開發(fā)過程中最為常見的幾種 MySQL 拋出的異常以及如何解決,包括高版本驅(qū)動的問題、時區(qū)配置問題、SSL 連接問題等。于我個人而言,這一篇足以解決目前項(xiàng)目中所有遇到的MySQL問題。同時,也希望本文能對 MySQL 數(shù)據(jù)庫初學(xué)者有一定的引導(dǎo)入門作用。

前言

報錯如下:

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

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

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

1.1、錯誤產(chǎn)生描述

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

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

1.2、解決方式

修改配置文件對應(yīng)的名稱和密碼。

二、導(dǎo)入的非本地項(xiàng)目文件與本地的數(shù)據(jù)庫版本不匹配

2.1、錯誤產(chǎn)生描述

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

舉個例子:你導(dǎo)入你 eclipse 中的項(xiàng)目里面依賴的 jar 包是 8.0 的版本,而你本地安裝的是 5.0 的 MySQL 數(shù)據(jù)庫,自然報錯。

2.2、解決方式

在你導(dǎo)入的項(xiàng)目中找到 Referenced Libraries,右擊鼠標(biāo)→Build Path→Configure Build Path…Remove 掉項(xiàng)目里面依賴的 8.0 的 MySQL 驅(qū)動,Add 進(jìn)你本地安裝的 5.0 的版本即可。

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

這個錯誤是由于 MySQL 版本更新之后,驅(qū)動包發(fā)生改變導(dǎo)致的,新的驅(qū)動程序類是 com.mysql.cj.jdbc.Driver。

3.1、錯誤產(chǎn)生描述

報錯如下:

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.

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

3.2、解決方式

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

<!-- 加載數(shù)據(jù)庫驅(qū)動 -->
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>

3.3、MySQL 不同版本的驅(qū)動類如何查看

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

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

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

4.1、錯誤產(chǎn)生描述

報錯如下:

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、解決方式

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

配置文件如下:

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

五、為什么數(shù)據(jù)庫中寫入數(shù)據(jù)相差 8 個小時?

5.1、錯誤產(chǎn)生描述

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

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

5.2、解決方式

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

配置文件如下即可:

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

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

六、SSL 連接問題

6.1、錯誤產(chǎn)生描述

報錯如下:

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.

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

6.2、解決方式

  • 數(shù)據(jù)庫 URL 連接地址添加useSSL = false,適用于測試。
  • 數(shù)據(jù)庫 URL 連接地址添加useSSL = true,并且提供服務(wù)器的驗(yàn)證證書。

配置文件如下即可:

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

總結(jié)

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

以上就是分析MySQL拋出異常的幾種常見解決方式的詳細(xì)內(nèi)容,更多關(guān)于MySQL異常的解決方式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 綠色版 mysql 安裝配置

    綠色版 mysql 安裝配置

    好多朋友對于mysql的配置不是很清楚,其實(shí)最新本的配置也是這樣的,建議大家到s.jb51.net去下載一些服務(wù)器軟件。
    2009-06-06
  • 淺析Mysql 中如何導(dǎo)出數(shù)據(jù)

    淺析Mysql 中如何導(dǎo)出數(shù)據(jù)

    MySQL中你可以使用SELECT…INTO OUTFILE語句來簡單的導(dǎo)出數(shù)據(jù)到文本文件上,這篇文章給大家介紹了Mysql 中如何導(dǎo)出數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • JDBC鏈接mysql插入數(shù)據(jù)后顯示問號的原因及解決辦法

    JDBC鏈接mysql插入數(shù)據(jù)后顯示問號的原因及解決辦法

    這篇文章主要介紹了JDBC鏈接mysql插入數(shù)據(jù)后顯示問號的原因及解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • MySQL啟動失敗之MySQL服務(wù)無法啟動的原因及解決

    MySQL啟動失敗之MySQL服務(wù)無法啟動的原因及解決

    這篇文章主要介紹了MySQL啟動失敗之MySQL服務(wù)無法啟動的原因及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • MySQL事件與觸發(fā)器專題精煉

    MySQL事件與觸發(fā)器專題精煉

    觸發(fā)器是SQLserver提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,事件是在?MySQL?5.1后引入的,有點(diǎn)類似操作系統(tǒng)的計(jì)劃任務(wù),但是周期性任務(wù)是內(nèi)置在MySQL服務(wù)端執(zhí)行的
    2022-03-03
  • mysql 5.7.18 zip版安裝使用教程

    mysql 5.7.18 zip版安裝使用教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.18 zip版安裝使用教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • MySql在Mac上的安裝與配置詳解

    MySql在Mac上的安裝與配置詳解

    這篇文章主要介紹了MySql在Mac上的安裝配置,需要的朋友可以參考下
    2017-05-05
  • mysql 添加索引的實(shí)現(xiàn)步驟

    mysql 添加索引的實(shí)現(xiàn)步驟

    索引是一種用于提高查詢效率的數(shù)據(jù)結(jié)構(gòu),通過添加索引,可以加快數(shù)據(jù)的查找速度,本文主要介紹了mysql 添加索引的實(shí)現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • mysql并發(fā)控制原理知識點(diǎn)

    mysql并發(fā)控制原理知識點(diǎn)

    在本篇文章里小編給大家整理的是一篇關(guān)于mysql并發(fā)控制原理知識點(diǎn)內(nèi)容,需要的朋友們參考下吧。
    2020-02-02
  • MySQL日志管理和備份與恢復(fù)

    MySQL日志管理和備份與恢復(fù)

    這篇文章主要介紹了MySQL如何實(shí)現(xiàn)日志的管理,備份與恢復(fù),本文有一定的參考價值,感興趣的小伙伴可以參考閱讀
    2023-04-04

最新評論