国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:99日期:2023-10-02 18:12:34
目錄前言一、代碼配置的數(shù)據(jù)庫名稱或者密碼與本地數(shù)據(jù)庫不一致1.1、錯誤產(chǎn)生描述1.2、解決方式二、導入的非本地項目文件與本地的數(shù)據(jù)庫版本不匹配2.1、錯誤產(chǎn)生描述2.2、解決方式三、MySQL 高版本配置加載驅(qū)動類包出錯問題(以 MySQL 8.0 為例)3.1、錯誤產(chǎn)生描述3.2、解決方式3.3、MySQL 不同版本的驅(qū)動類如何查看四、數(shù)據(jù)庫連接字符串高版本配置出錯(時區(qū)問題)4.1、錯誤產(chǎn)生描述4.2、解決方式五、為什么數(shù)據(jù)庫中寫入數(shù)據(jù)相差 8 個小時?5.1、錯誤產(chǎn)生描述5.2、解決方式六、SSL 連接問題6.1、錯誤產(chǎn)生描述總結(jié)前言

報錯如下:

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ù)庫不一致,拋出異常。

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

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

1.2、解決方式

修改配置文件對應的名稱和密碼。

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

二、導入的非本地項目文件與本地的數(shù)據(jù)庫版本不匹配2.1、錯誤產(chǎn)生描述

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

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

2.2、解決方式

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

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

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

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

這個錯誤是由于 MySQL 版本更新之后,驅(qū)動包發(fā)生改變導致的,新的驅(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ū)動類。修改之后的配置文件如下圖所示:

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

<!-- 加載數(shù)據(jù)庫驅(qū)動 --><property name='driverClass' value='com.mysql.cj.jdbc.Driver'></property>3.3、MySQL 不同版本的驅(qū)動類如何查看

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

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

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

四、數(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ū)支持,通過配置服務器或 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ū)(世界標準時間),即 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、解決方式

我們可以修改設置 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 配置文件也可以修改,此文章僅用于解決相應問題,故不多做詳細描述。

六、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.

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

6.2、解決方式

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

配置文件如下即可:

<!-- 數(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ā)者要及時了解,不然永遠跟不上技術(shù)的發(fā)展。

以上就是分析MySQL拋出異常的幾種常見解決方式的詳細內(nèi)容,更多關于MySQL異常的解決方式的資料請關注好吧啦網(wǎng)其它相關文章!

相關文章:
主站蜘蛛池模板: 高清一级片 | 美女视频黄.免费网址 | 精品国产一区二区三区不卡 | 最新国产成人综合在线观看 | 午夜亚洲 | 久久久久久青草大香综合精品 | 亚洲欧美视频在线 | 免费看香港一级毛片 | 日韩成人精品日本亚洲 | 国产一区亚洲 | 国产手机在线视频放线视频 | 成人亚洲精品777777 | 大美女香蕉丽人视频网站 | 国产免费一区二区三区免费视频 | 18免费网站 | 日本xxxxx黄区免费看动漫 | 国产呦系列呦交 | 欧美激情久久久久久久久 | 国产91精品一区二区麻豆亚洲 | 日产国产精品久久久久久 | 久久久久久福利 | 黑人黄色毛片 | 在线观看免费a∨网站 | 国产三区视频在线观看 | 亚洲va中文字幕欧美不卡 | 一本色道久久综合亚洲精品高清 | 国产一区三区二区中文在线 | 精品久久久久久久久免费影院 | 亚洲男人天堂手机版 | 国产精品久久久久久久人热 | 成人性免费视频 | a级淫片| 欧美成a | 国产成人亚洲日本精品 | 成人免费观看视频久爱网 | 国产亚洲精品日韩已满十八 | 免费一区在线观看 | 久久久久久在线 | 国产欧美日韩综合一区二区三区 | 国产乱码一区二区三区四川人 | 欧美视频在线观看免费精品欧美视频 |