标准配置
无论是使用5.#数据库还是8.#版本数据库,只要jdbc驱动使用的是8.#那么我们就需要考虑数据库时区问题,否则就会报时区错误,标准配置代码如下:
# 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
其他配置参考
#北京东八区
serverTimezone=GMT%2B8
#上海时区
serverTimezone=Asia/Shanghai
问题根源
MySQL8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空。如果我们不手动指定serverTimezone属性,那么默认采用UTC时间
UTC是什么时区
不属于任意时区 ,协调世界时间, 又称世界统一时间,世界标准时间,国际协调时间,简称UTC,UTC时间会比北京时间少8小时, 所以数据库连接会直接出现时区错误。
地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早。东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便。
为了克服时间上的混乱,1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为中时区(零时区)、东1—12区,西1—12区。每个时区横跨经度15度,时间正好是1小时。最后的东、西第12区各跨经度7.5度,以东、西经180度为界。每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两个时区的时间相差1小时。文章来源:https://www.toymoban.com/news/detail-568321.html
例如,中国东8区的时间总比泰国东7区的时间早1小时,而比日本东9区的时间晚1小时。因此,出国旅行的人,必须随时调整自己的手表,才能和当地时间相一致。凡向西走,每过一个时区,就要把表拨慢1小时(比如2点拨到1点);凡向东走,每过一个时区,就要把表拨快1小时(比如1点拨到2点)。并且规定英国(格林尼治天文台旧址)为本初子午线,即零度经线。
正因为这个原因, 我们本地安装使用MySQL的时候默认走本地的时间,而连接默认使用UTC, 所以产生了时差, 导致数据库连接不成功。文章来源地址https://www.toymoban.com/news/detail-568321.html
到了这里,关于serverTimezone时区设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!