mysql中url時(shí)區(qū)的陷阱該如何規(guī)避詳解
前言
最近在使用mysql的6.0.x以上的jar的時(shí)候,需要在代碼url的鏈接里面指定serverTimezone。就會(huì)出現(xiàn)異常:
1.未指定serverTimezone
xml里面配置url
<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy"/>
出現(xiàn)的異常
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.
您必須配置服務(wù)器或JDBC驅(qū)動(dòng)程序(通過(guò)serverTimezone配置屬性),如果您想要使用時(shí)區(qū)支持,則需要使用一個(gè)更詳細(xì)的時(shí)區(qū)值。
2.網(wǎng)上的解決方案
在url后面加上參數(shù)?serverTimezone=utc
<property name="url" value="jdbc:mysql://localhost:3306/springdatastudy?serverTimezone=UTC"/>
2.1.遇到的問(wèn)題
雖然上面加上時(shí)區(qū)程序不出錯(cuò)了,但是我們?cè)谟胘ava代碼插入到數(shù)據(jù)庫(kù)時(shí)間的時(shí)候卻出現(xiàn)了問(wèn)題。
比如在java代碼里面插入的時(shí)間為:2017-08-21 17:29:56
但是在數(shù)據(jù)庫(kù)里面顯示的時(shí)間卻為:2017-08-21 09:29:56
3.根本原因
因?yàn)闀r(shí)區(qū)設(shè)置的問(wèn)題。
UTC代表的是全球標(biāo)準(zhǔn)時(shí)間 ,但是我們使用的時(shí)間是北京時(shí)區(qū)也就是東八區(qū),領(lǐng)先UTC八個(gè)小時(shí)。
UTC + (+0800) = 本地(北京)時(shí)間
4.解決方案
url的時(shí)區(qū)使用中國(guó)標(biāo)準(zhǔn)時(shí)間。也是就serverTimezone=Asia/Shanghai
4.1 使用java代碼獲取本地的時(shí)區(qū)id
Calendar cal = Calendar.getInstance(); TimeZone timeZone = cal.getTimeZone(); System.out.println(timeZone.getID()); System.out.println(timeZone.getDisplayName());
Asia/Shanghai 中國(guó)標(biāo)準(zhǔn)時(shí)間
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- 一文帶你永久擺脫Mysql時(shí)區(qū)錯(cuò)誤問(wèn)題(idea數(shù)據(jù)庫(kù)可視化插件配置)
- 關(guān)于SpringBoot mysql數(shù)據(jù)庫(kù)時(shí)區(qū)問(wèn)題
- mysql解決時(shí)區(qū)相關(guān)問(wèn)題
- 關(guān)于Java中的mysql時(shí)區(qū)問(wèn)題詳解
- MySQL查看和修改時(shí)區(qū)的方法
- MySQL timestamp的類(lèi)型與時(shí)區(qū)實(shí)例詳解
- MySQL修改時(shí)區(qū)的方法小結(jié)
- Mysql查看數(shù)據(jù)庫(kù)時(shí)區(qū)并設(shè)置時(shí)區(qū)的方法
相關(guān)文章
Windows7下Python3.4使用MySQL數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了Windows7下Python3.4使用MySQL數(shù)據(jù)庫(kù),MySQL Community Server的安裝步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07mysql 遠(yuǎn)程連接數(shù)據(jù)庫(kù)的方法集合
MySQL數(shù)據(jù)庫(kù)不允許從遠(yuǎn)程訪問(wèn)怎么辦?本文提供了三種解決方法:2008-03-03MySQL Event Scheduler(事件調(diào)度器)
事件調(diào)度器是在 MySQL 5.1 中新增的另一個(gè)特色功能,可以作為定時(shí)任務(wù)調(diào)度器,取代部分原先只能用操作系統(tǒng)任務(wù)調(diào)度器才能完成的定時(shí)功能。2010-06-06與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(五)--運(yùn)算符
MYSQL中的運(yùn)算符很多,這一節(jié)主要講MYSQL中有的,而SQLSERVER沒(méi)有的運(yùn)算符2014-06-06Mysql聯(lián)合查詢(xún)UNION和Order by同時(shí)使用報(bào)錯(cuò)問(wèn)題的解決辦法
很多朋友剛使用聯(lián)合查詢(xún)UNION的時(shí)候常常會(huì)理所當(dāng)然的將聯(lián)合查詢(xún)理解為把沒(méi)一個(gè)子查詢(xún)的結(jié)果集組合成一個(gè)大的結(jié)果集2014-04-04JDBC如何連接不同類(lèi)型數(shù)據(jù)庫(kù)
這篇文章主要介紹了JDBC如何連接不同類(lèi)型數(shù)據(jù)庫(kù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2007-02-02MySQL入門(mén)(三) 數(shù)據(jù)庫(kù)表的查詢(xún)操作【重要】
本節(jié)比較重要,對(duì)數(shù)據(jù)表數(shù)據(jù)進(jìn)行查詢(xún)操作,其中可能大家不熟悉的就對(duì)于INNER JOIN(內(nèi)連接)、LEFT JOIN(左連接)、RIGHT JOIN(右連接)等一些復(fù)雜查詢(xún)。 通過(guò)本節(jié)的學(xué)習(xí),可以讓你知道這些基本的復(fù)雜查詢(xún)是怎么實(shí)現(xiàn)的,,需要的朋友可以參考下2018-07-07