加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql入门mysql中url时区的陷阱该如何规避详解

发布时间:2020-12-12 00:55:44 所属栏目:MySql教程 来源:网络整理
导读:《Mysql入门mysql中url时区的陷阱该如何规避详解》要点: 本文介绍了Mysql入门mysql中url时区的陷阱该如何规避详解,希望对您有用。如果有疑问,可以联系我们。 MYSQL学习 前言 MYSQL学习 最近在使用mysql的6.0.x以上的jar的时候,需要在代码url的链接里面指

《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的支持.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读