溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中url時區(qū)的陷阱該怎么規(guī)避

發(fā)布時間:2020-09-28 17:33:38 來源:億速云 閱讀:260 作者:小新 欄目:MySQL數據庫

小編給大家分享一下mysql中url時區(qū)的陷阱該怎么規(guī)避,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.未指定serverTimezone

xml里面配置url

<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy"/>

出現的異常

Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: 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.

您必須配置服務器或JDBC驅動程序(通過serverTimezone配置屬性),如果您想要使用時區(qū)支持,則需要使用一個更詳細的時區(qū)值。

2.網上的解決方案

在url后面加上參數?serverTimezone=utc

<property name="url" value="jdbc:mysql://localhost:3306/springdatastudy?serverTimezone=UTC"/>

2.1.遇到的問題

雖然上面加上時區(qū)程序不出錯了,但是我們在用java代碼插入到數據庫時間的時候卻出現了問題。

比如在java代碼里面插入的時間為:2017-08-21 17:29:56

但是在數據庫里面顯示的時間卻為:2017-08-21 09:29:56

3.根本原因

因為時區(qū)設置的問題。

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

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

4.解決方案

url的時區(qū)使用中國標準時間。也是就serverTimezone=Asia/Shanghai

4.1 使用java代碼獲取本地的時區(qū)id

Calendar cal = Calendar.getInstance();
TimeZone timeZone = cal.getTimeZone();
System.out.println(timeZone.getID());
System.out.println(timeZone.getDisplayName());
Asia/Shanghai
中國標準時間

以上是mysql中url時區(qū)的陷阱該怎么規(guī)避的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI