Mysql 8.0版本以上和8.0以下jar包版本 需要注意的 URL連接參數useSSL、serverTimezone 相關問題

在語法上的需要注意的:

MySQL 8.0 以下版本 - JDBC 驅動名及數據庫 URL

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
static final String DB_URL = "jdbc:mysql://localhost:3306/test";

MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL

static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  
static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";

1. MySQL在高版本需要指明是否進行SSL連接

(保障Internet數據傳輸安全利用數據加密)需要在url後面添加useSSL=true或者false不然在運行時控制檯會出現紅色警告。

useSSL=true 需要連接

useSSL=false 不需要連接

2. 項目中使用MySQL8可能出現時差問題

例:往數據庫添加的時間是(2020-01-01 09:00:00)然而數據庫中顯示的時間卻少了8個小時(2020-01-01 01:00:00)。

根本原因

因爲時區設置的問題。

UTC代表的是全球標準時間 ,但是我們使用的時間是北京時區也就是東八區,領先UTC八個小時。

UTC + (+0800) = 本地(北京)時間。

解決方案

url的時區使用中國標準時間

//北京時間東八區
serverTimezone=GMT%2B8 
//上海時間
serverTimezone=Asia/Shanghai

3. 在使用Intellij IDEA連接數據庫並指定字符編碼時,遇到如下報錯: 

url=jdbc:mysql://127.0.0.1:3306/framework?characterEncoding=utf8&useSSL=true

提示不允許在?useUnicode=true&characterEncoding=utf-8中使用“&”號

是IDEA將“&”當成了特殊符號。

解決方案

方法一: 
將“&”改寫爲“&”

方法二: 
去掉useUnicode=true,只寫characterEncoding=utf-8

 

轉載自:BestEternity親筆。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章