《Mysql入門mysql中url時區的陷阱該如何規避詳解》要點:
本文介紹了Mysql入門mysql中url時區的陷阱該如何規避詳解,希望對您有用。如果有疑問,可以聯系我們。
MYSQL學習前言
MYSQL學習最近在使用mysql的6.0.x以上的jar的時候,需要在代碼url的鏈接里面指定serverTimezone.就會出現異常:
MYSQL學習1.未指定serverTimezone
MYSQL學習xml里面配置url
MYSQL學習
<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy"/>
MYSQL學習出現的異常
MYSQL學習
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.
MYSQL學習您必須配置服務器或JDBC驅動程序(通過serverTimezone配置屬性),如果您想要使用時區支持,則需要使用一個更詳細的時區值.
MYSQL學習2.網上的解決方案
MYSQL學習在url后面加上參數?serverTimezone=utc
MYSQL學習
<property name="url" value="jdbc:mysql://localhost:3306/springdatastudy?serverTimezone=UTC"/>
MYSQL學習2.1.遇到的問題
MYSQL學習雖然上面加上時區程序不出錯了,但是我們在用java代碼插入到數據庫時間的時候卻出現了問題.
MYSQL學習比如在java代碼里面插入的時間為:2017-08-21 17:29:56
MYSQL學習但是在數據庫里面顯示的時間卻為:2017-08-21 09:29:56
MYSQL學習3.根本原因
MYSQL學習因為時區設置的問題.
MYSQL學習UTC代表的是全球標準時間 ,但是我們使用的時間是北京時區也就是東八區,領先UTC八個小時.
MYSQL學習UTC + (+0800) = 本地(北京)時間
MYSQL學習4.解決方案
MYSQL學習url的時區使用中國標準時間.也是就serverTimezone=Asia/Shanghai
MYSQL學習4.1 使用java代碼獲取本地的時區id
MYSQL學習
Calendar cal = Calendar.getInstance();
TimeZone timeZone = cal.getTimeZone();
System.out.println(timeZone.getID());
System.out.println(timeZone.getDisplayName());
MYSQL學習
Asia/Shanghai
中國標準時間
MYSQL學習總結
MYSQL學習以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對維易PHP的支持.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/5279.html