濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 使用JDBC連接Mysql數(shù)據(jù)庫(kù)會(huì)出現(xiàn)的問(wèn)題總結(jié)

使用JDBC連接Mysql數(shù)據(jù)庫(kù)會(huì)出現(xiàn)的問(wèn)題總結(jié)

熱門(mén)標(biāo)簽:外呼系統(tǒng)防封號(hào)違法嗎 400電話辦理都選易號(hào)網(wǎng) 湘潭電銷(xiāo)機(jī)器人咨詢(xún)電話 如何在高德地圖標(biāo)注新地址 外呼系統(tǒng)服務(wù) 寶應(yīng)電信400電話辦理費(fèi)用 電銷(xiāo)機(jī)器人針對(duì)的 高德地圖標(biāo)注中心個(gè)人注冊(cè) 高德地圖標(biāo)注模式

首先理清幾個(gè)概念:

  • JDBC:java數(shù)據(jù)庫(kù)連接,是Orical公司的指定的一套規(guī)范接口
  • java數(shù)據(jù)庫(kù)驅(qū)動(dòng):JDBC的實(shí)現(xiàn)類(lèi),由相應(yīng)的數(shù)據(jù)庫(kù)廠商提供,可以通過(guò)驅(qū)動(dòng)去操作不同的數(shù)據(jù)庫(kù)
  • 在java-數(shù)據(jù)庫(kù)這里,jdbc-api中的所有包都是java.sql或者javax.sql

JDBC的操作步驟:

 (1)建立數(shù)據(jù)庫(kù)和表

 (2)創(chuàng)建項(xiàng)目

 (3)導(dǎo)入驅(qū)動(dòng)jar包

 (4)注冊(cè)驅(qū)動(dòng)

  Class.forName("com.mysql.jdbc.Driver");

 (5)獲取連接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:端口號(hào)/項(xiàng)目名", "登錄名", "密碼");

前言

最近安裝了一個(gè) mysql 8.0 版本的數(shù)據(jù)庫(kù),在程序中連接的時(shí)候可謂是狀況不斷。之前也會(huì)遇到一些問(wèn)題,這里就對(duì)使用 JDBC 連接mysql 會(huì)出現(xiàn)的問(wèn)題做一個(gè)匯總。

在此之前說(shuō)明一下環(huán)境:

  • 開(kāi)發(fā)工具:IDEA
  • mysql版本: 8.0.12 for Win64 on x86_64 (MySQL Community Server - GPL)
  • mysql驅(qū)動(dòng)包:8.0.12

驅(qū)動(dòng)包URL 的改變

異常信息

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.

原因

通過(guò)異常我們可以發(fā)現(xiàn),新的驅(qū)動(dòng)url是com.mysql.cj.jdbc.Driver,經(jīng)過(guò)在網(wǎng)上查閱資料發(fā)現(xiàn),從 mysql6開(kāi)始,驅(qū)動(dòng)包開(kāi)始使用新的驅(qū)動(dòng) url。如果使用舊的 5.0 版本的驅(qū)動(dòng)包,則不用驅(qū)動(dòng)URL,但是如果使用舊的驅(qū)動(dòng)可能會(huì)出現(xiàn)一些意想不到的問(wèn)題。所以還是建議將驅(qū)動(dòng)包升級(jí),然后改變 驅(qū)動(dòng) URL 的值。

解決方法

將驅(qū)動(dòng) URL 由com.mysql.jdbc.Driver 換成 com.mysql.cj.jdbc.Driver

SSL 警告

警告信息

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.

原因

對(duì)警告信息翻譯如下。

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

解決方法

一般在開(kāi)發(fā)中基本不需要使用 SSL 連接,在連接字符串后添加useSSL=false參數(shù)就行。但是如果真的有 SSL 連接的需要,則在驅(qū)動(dòng) URL 后添加useSSL=true參數(shù)。

jdbc:mysql://localhost:3306/dbname?characterEncoding=UTF-8useSSL=false

時(shí)區(qū)問(wèn)題

異常信息

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.

原因

同樣也是由于版本升級(jí)后,新的版本數(shù)據(jù)庫(kù)和系統(tǒng)之間有了時(shí)區(qū)差異,需要指定時(shí)區(qū)serverTimezone

解決方法

連接字符串后添加參數(shù)serverTimezone=GMT%2B8,最終連接字符串如下:

jdbc:mysql://localhost:3306/dbname?characterEncoding=UTF-8useSSL=falseserverTimezone=GMT%2B8

修改數(shù)據(jù)庫(kù)時(shí)間。先通過(guò)命令行連上數(shù)據(jù)庫(kù),依次輸入命令及其輸出如下

mysql> show variables like "%time_zone";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone |  |
| time_zone  | SYSTEM |
+------------------+--------+
2 rows in set, 1 warning (0.04 sec)

mysql> set global time_zone="+8:00";
Query OK, 0 rows affected (0.01 sec)

XML 配置文件中 的轉(zhuǎn)義

異常信息

org.mybatis.generator.exception.XMLParserException: XML Parser Error on line 16: 對(duì)實(shí)體 “useSSL” 的引用必須以 ‘;' 分隔符結(jié)尾。

原因

這是我在使用mybatis generator時(shí)出現(xiàn)的錯(cuò)誤。當(dāng)時(shí)我想在連接字符串后加上useSSL參數(shù),但是由于在 XML 文件中,是被禁止的,所以需要使用 的時(shí)要用它的轉(zhuǎn)義來(lái)代替。

解決方法

將連接字符串中的 符號(hào)改成

詳細(xì)連接字符串參考

jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=truecharacterEncoding=utf8characterSetResults=utf8useSSL=falseserverTimezone=GMT%2B8verifyServerCertificate=falseautoReconnct=trueautoReconnectForPools=trueallowMultiQueries=true

當(dāng)然如果是使用 XML 作為配置文件,需要將 連接字符串中的 符號(hào)改成

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • java jdbc連接mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)增刪改查操作
  • JDBC連接MySql數(shù)據(jù)庫(kù)步驟 以及查詢(xún)、插入、刪除、更新等
  • JDBC連接MySQL5.7的方法
  • JSP使用JDBC連接MYSQL數(shù)據(jù)庫(kù)的方法
  • java使用jdbc連接數(shù)據(jù)庫(kù)工具類(lèi)和jdbc連接mysql數(shù)據(jù)示例
  • JDBC 連接MySQL實(shí)例詳解
  • mysql jdbc連接步驟及常見(jiàn)參數(shù)
  • JDBC連接MySQL出現(xiàn)的問(wèn)題
  • Java 通過(guò)JDBC連接Mysql數(shù)據(jù)庫(kù)
  • JDBC連接的六步實(shí)例代碼(與mysql連接)

標(biāo)簽:馬鞍山 賀州 佛山 黃山 宿遷 南充 蘭州 黔南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用JDBC連接Mysql數(shù)據(jù)庫(kù)會(huì)出現(xiàn)的問(wèn)題總結(jié)》,本文關(guān)鍵詞  使用,JDBC,連接,Mysql,數(shù)據(jù)庫(kù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用JDBC連接Mysql數(shù)據(jù)庫(kù)會(huì)出現(xiàn)的問(wèn)題總結(jié)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于使用JDBC連接Mysql數(shù)據(jù)庫(kù)會(huì)出現(xiàn)的問(wèn)題總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    大庆市| 肥东县| 英山县| 开远市| 徐水县| 盐池县| 井研县| 高尔夫| 河源市| 镇赉县| 绥江县| 武宁县| 科技| 江山市| 馆陶县| 开平市| 渭源县| 余江县| 汨罗市| 延川县| 深州市| 上蔡县| 深圳市| 竹溪县| 宜都市| 新密市| 平潭县| 淳化县| 靖州| 自贡市| 大竹县| 会泽县| 博乐市| 中阳县| 华坪县| 林芝县| 柳州市| 宝清县| 遵义县| 磴口县| 新乡市|