最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

報(bào)錯(cuò)如下:

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

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

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

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

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

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

1.2、解決方式

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

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

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

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

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

2.2、解決方式

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

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

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

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

報(bào)錯(cuò)如下:

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.

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

3.2、解決方式

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

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

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

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

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

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

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

報(bào)錯(cuò)如下:

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

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

配置文件如下:

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

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

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

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

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

5.2、解決方式

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

配置文件如下即可:

<!-- 數(shù)據(jù)庫(kù)連接字符串 -->
<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、錯(cuò)誤產(chǎn)生描述

報(bào)錯(cuò)如下:

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.

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

6.2、解決方式

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

配置文件如下即可:

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

總結(jié)

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

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

相關(guān)文章

  • Linux中部署MySQL環(huán)境的四種方式圖文詳解

    Linux中部署MySQL環(huán)境的四種方式圖文詳解

    這篇文章主要介紹了Linux中部署MySQL環(huán)境的四種方式,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • mysql CPU高負(fù)載問題排查

    mysql CPU高負(fù)載問題排查

    這篇文章主要介紹了mysql CPU高負(fù)載問題排查的相關(guān)資料,幫助大家更好的理解和使用MySQL,維護(hù)數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-11-11
  • Mysql分庫(kù)分表實(shí)現(xiàn)方式

    Mysql分庫(kù)分表實(shí)現(xiàn)方式

    這篇文章詳細(xì)介紹了分庫(kù)分表的概念,原因,如何實(shí)現(xiàn),以及不同中間件的優(yōu)缺點(diǎn),同時(shí),也介紹了如何進(jìn)行數(shù)據(jù)遷移和擴(kuò)容縮容,以及如何處理分庫(kù)分表后的ID和事務(wù)問題
    2025-02-02
  • mysql用戶管理操作實(shí)例分析

    mysql用戶管理操作實(shí)例分析

    這篇文章主要介紹了mysql用戶管理操作,結(jié)合實(shí)例形式分析了mysql用戶管理查看、創(chuàng)建、修改、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04
  • MYSQL的binary解決mysql數(shù)據(jù)大小寫敏感問題的方法

    MYSQL的binary解決mysql數(shù)據(jù)大小寫敏感問題的方法

    BINARY不是函數(shù),是類型轉(zhuǎn)換運(yùn)算符,它用來(lái)強(qiáng)制它后面的字符串為一個(gè)二進(jìn)制字符串,可以理解為在字符串比較的時(shí)候區(qū)分大小寫
    2013-09-09
  • MySQL?datetime類型與時(shí)間、日期格式字符串大小比較的方法

    MySQL?datetime類型與時(shí)間、日期格式字符串大小比較的方法

    這篇文章主要介紹了MySQL?datetime類型與時(shí)間、日期格式字符串大小比較,本文使用的是mysql8.0.27版本,其他版本自測(cè)一下,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • MySQL數(shù)據(jù)庫(kù)優(yōu)化詳解

    MySQL數(shù)據(jù)庫(kù)優(yōu)化詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)優(yōu)化的方方面面,各種小技巧,需要的朋友可以參考下
    2014-08-08
  • Mysql優(yōu)化神器(推薦)

    Mysql優(yōu)化神器(推薦)

    這篇文章主要介紹了Mysql優(yōu)化神器(推薦),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • master and slave have equal MySQL server UUIDs 解決方法

    master and slave have equal MySQL server UUIDs 解決方法

    使用rsync配置了大量mysql,省去了大量編譯和配置的時(shí)間,隨逐個(gè)修改master和slave服務(wù)器的my.cnf,后,發(fā)現(xiàn)數(shù)據(jù)不能同步
    2013-07-07
  • MySQL 加鎖控制并發(fā)的方法

    MySQL 加鎖控制并發(fā)的方法

    這篇文章主要介紹了MySQL 加鎖控制并發(fā)的方法,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2021-01-01

最新評(píng)論

京山县| 中超| 盐津县| 翁牛特旗| 西贡区| 塔城市| 涡阳县| 金寨县| 临沂市| 化德县| 阿荣旗| 富锦市| 苏尼特左旗| 台江县| 大邑县| 安康市| 自贡市| 闵行区| 许昌市| 驻马店市| 东城区| 平罗县| 西盟| 吴忠市| 德昌县| 集安市| 屏东县| 贵德县| 永寿县| 垦利县| 前郭尔| 江孜县| 山东省| 安阳县| 兴安盟| 阳谷县| 阿尔山市| 会泽县| 永济市| 将乐县| 桑植县|