標準配置
無論是使用5.#數(shù)據庫還是8.#版本數(shù)據庫,只要jdbc驅動使用的是8.#那么我們就需要考慮數(shù)據庫時區(qū)問題,否則就會報時區(qū)錯誤,標準配置代碼如下:
# mysql
jdbc.username = root
jdbc.url = jdbc:mysql://localhost:3306/hospital?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
jdbc.password = 123456
jdbc.driver = com.mysql.cj.jdbc.Driver
其他配置參考
#北京東八區(qū)
serverTimezone=GMT%2B8
#上海時區(qū)
serverTimezone=Asia/Shanghai
問題根源
MySQL8.x的jdbc升級了,增加了時區(qū)(serverTimezone)屬性,并且不允許為空。如果我們不手動指定serverTimezone屬性,那么默認采用UTC時間
UTC是什么時區(qū)
不屬于任意時區(qū) ,協(xié)調世界時間, 又稱世界統(tǒng)一時間,世界標準時間,國際協(xié)調時間,簡稱UTC,UTC時間會比北京時間少8小時, 所以數(shù)據庫連接會直接出現(xiàn)時區(qū)錯誤。
地球是自西向東自轉,東邊比西邊先看到太陽,東邊的時間也比西邊的早。東邊時刻與西邊時刻的差值不僅要以時計,而且還要以分和秒來計算,這給人們帶來不便。
為了克服時間上的混亂,1884年在華盛頓召開的一次國際經度會議(又稱國際子午線會議)上,規(guī)定將全球劃分為24個時區(qū)(東、西各12個時區(qū))。規(guī)定英國(格林尼治天文臺舊址)為中時區(qū)(零時區(qū))、東1—12區(qū),西1—12區(qū)。每個時區(qū)橫跨經度15度,時間正好是1小時。最后的東、西第12區(qū)各跨經度7.5度,以東、西經180度為界。每個時區(qū)的中央經線上的時間就是這個時區(qū)內統(tǒng)一采用的時間,稱為區(qū)時,相鄰兩個時區(qū)的時間相差1小時。文章來源:http://www.zghlxwxcb.cn/news/detail-568321.html
例如,中國東8區(qū)的時間總比泰國東7區(qū)的時間早1小時,而比日本東9區(qū)的時間晚1小時。因此,出國旅行的人,必須隨時調整自己的手表,才能和當?shù)貢r間相一致。凡向西走,每過一個時區(qū),就要把表撥慢1小時(比如2點撥到1點);凡向東走,每過一個時區(qū),就要把表撥快1小時(比如1點撥到2點)。并且規(guī)定英國(格林尼治天文臺舊址)為本初子午線,即零度經線。
正因為這個原因, 我們本地安裝使用MySQL的時候默認走本地的時間,而連接默認使用UTC, 所以產生了時差, 導致數(shù)據庫連接不成功。文章來源地址http://www.zghlxwxcb.cn/news/detail-568321.html
到了這里,關于serverTimezone時區(qū)設置的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!