com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的區(qū)別
大家在連接mysql的時(shí)候,啟動(dòng)項(xiàng)目,會(huì)警告你推薦使用com.mysql.cj.jdbc.Driver 而不是com.mysql.jdbc.Driver
那么這兩者到底有什么區(qū)別呢
本質(zhì)區(qū)別:
com.mysql.jdbc.Driver 是 mysql-connector-java 5中的, com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6以及以上中的
在使用com.mysql.jdbc.Driver時(shí),配置是需要下面這樣的:
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false username=root password=
在使用com.mysql.cj.jdbc.Driver時(shí),則是需要下面這樣的配置的:
driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&?useUnicode=true&characterEncoding=utf8&useSSL=false username=root password=
注意:
需要指定時(shí)區(qū)(serverTimezone=UTC)和 使用SSL (useSSL=false)
另外還需注意:
在設(shè)定時(shí)區(qū)的時(shí)候,如果設(shè)定serverTimezone=UTC,會(huì)比中國(guó)時(shí)間早8個(gè)小時(shí),如果在中國(guó),可以選擇Asia/Shanghai或者Asia/Hongkong,像下面這樣配置:
driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/test?serverTimezone=Shanghai&?useUnicode=true&characterEncoding=utf8&useSSL=false username=root password=
情況分析:
如果你maven使用的是6版本以及以上版本的mysql驅(qū)動(dòng):
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency>
這是使用的是8.0.16版本的Mysql驅(qū)動(dòng),那么會(huì)報(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.
上面報(bào)錯(cuò)翻譯:
正在加載類'com.mysql.jdbc.Driver'。 這已被棄用。 新的
驅(qū)動(dòng)程序類是'com.mysql.cj.jdbc.Driver'。
驅(qū)動(dòng)程序通過SPI自動(dòng)注冊(cè)
并且通常不需要手動(dòng)加載驅(qū)動(dòng)程序類。
這時(shí)候你就要把com.mysql.jdbc.Driver 改為 com.mysql.cj.jdbc.Driver
但是你改完之后還是會(huì)報(bào)錯(cuò):
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.
上面報(bào)錯(cuò)翻譯:
警告:建議不要在沒有服務(wù)器身份驗(yàn)證的情況下建立SSL連接。
根據(jù)MySQL 5.5.45 +,5.6.26+和5.7.6+要求SSL連接
如果未設(shè)置顯式選項(xiàng),則必須默認(rèn)建立。
為了符合不使用SSL的現(xiàn)有應(yīng)用程序,verifyServerCertificate屬性設(shè)置為“false”。
您需要通過設(shè)置useSSL = false顯式禁用SSL,
或者設(shè)置useSSL = true并為服務(wù)器證書驗(yàn)證提供信任庫。
這個(gè)時(shí)候如果不需要SSL驗(yàn)證,就在url后面加useSSL=false
這個(gè)時(shí)候就不會(huì)報(bào)警告了.
使用mysql 8.0.16 版本的驅(qū)動(dòng)的時(shí)候解決如下報(bào)錯(cuò):
java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone.
這是由于數(shù)據(jù)庫和系統(tǒng)時(shí)區(qū)差異所造成的,在jdbc連接的url后面加上serverTimezone=GMT即可解決問題,如果需要使用gmt+8時(shí)區(qū),需要寫成GMT%2B8,否則會(huì)被解析為空。
再一個(gè)解決辦法就是使用低版本的MySQL jdbc驅(qū)動(dòng),5.1.28不會(huì)存在時(shí)區(qū)的問題。
到此這篇關(guān)于com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的區(qū)別的文章就介紹到這了,更多相關(guān)com.mysql.jdbc.Driver com.mysql.cj.jdbc.Driver內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)
這篇文章主要介紹了MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03具有負(fù)載均衡功能的MySQL服務(wù)器集群部署及實(shí)現(xiàn)
MySQL是一個(gè)高速度、高性能、多線程的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),適用平臺(tái)多,可擴(kuò)展性強(qiáng)。2011-05-05MySql 5.6.35 winx64 安裝詳細(xì)教程
這篇文章主要介紹了MySql 5.6.35 winx64 安裝詳細(xì)教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02最全的mysql 5.7.13 安裝配置方法圖文教程(linux) 強(qiáng)烈推薦!
這篇文章主要為大家詳細(xì)介紹了linux下mysql 5.7.13 安裝配置方法圖文教程,感興趣的小伙伴們可以參考一下2016-08-08MySQL查詢數(shù)據(jù)庫所有表名以及表結(jié)構(gòu)其注釋(小白專用)
查詢數(shù)據(jù)庫所有表的表名、備注,其實(shí)也是比較常見的操作,這篇文章主要給大家介紹了關(guān)于MySQL查詢數(shù)據(jù)庫所有表名以及表結(jié)構(gòu)其注釋的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08MySQL存儲(chǔ)過程的深入講解(in、out、inout)
這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過程(in、out、inout)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11MySQL出現(xiàn)錯(cuò)誤代碼:1055的三種解決方案(推薦!)
當(dāng)我們?cè)诓樵儠r(shí)使用group by語句,出現(xiàn)錯(cuò)誤代碼:1055;執(zhí)行發(fā)生錯(cuò)誤語句,本文給大家介紹了MySQL出現(xiàn)錯(cuò)誤代碼:1055的三種解決方案,文中有詳細(xì)的代碼示例和圖文供大家參考,需要的朋友可以參考下2024-05-05深入了解MySQL鎖機(jī)制及應(yīng)用場(chǎng)景
MySQL鎖是操作MySQL數(shù)據(jù)庫時(shí)常用的一種機(jī)制。MySQL鎖可以保證多個(gè)用戶在同時(shí)執(zhí)行讀寫操作時(shí),能夠互相協(xié)同、避免數(shù)據(jù)出現(xiàn)不一致或者讀寫沖突等問題。本篇文章將詳細(xì)介紹MySQL鎖的基本知識(shí)和具體應(yīng)用2023-03-03