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

 更新时间:2017年08月24日 09:10:02   作者:落叶飞逝的恋  
最近在工作中发现一个问题,是关于mysql中url时区的,发现这个陷阱如果大家不注意可能都会遇到,所以给大家总结下,这篇文章主要给大家介绍了关于mysql中url时区的陷阱该如何规避的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

最近在使用mysql的6.0.x以上的jar的时候,需要在代码url的链接里面指定serverTimezone。就会出现异常:

1.未指定serverTimezone

xml里面配置url

<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy"/>

出现的异常

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.

您必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性),如果您想要使用时区支持,则需要使用一个更详细的时区值。

2.网上的解决方案

在url后面加上参数?serverTimezone=utc

<property name="url" value="jdbc:mysql://localhost:3306/springdatastudy?serverTimezone=UTC"/>

2.1.遇到的问题

虽然上面加上时区程序不出错了,但是我们在用java代码插入到数据库时间的时候却出现了问题。

比如在java代码里面插入的时间为:2017-08-21 17:29:56

但是在数据库里面显示的时间却为:2017-08-21 09:29:56

3.根本原因

因为时区设置的问题。

UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。

UTC + (+0800) = 本地(北京)时间

4.解决方案

url的时区使用中国标准时间。也是就serverTimezone=Asia/Shanghai

4.1 使用java代码获取本地的时区id

Calendar cal = Calendar.getInstance();
TimeZone timeZone = cal.getTimeZone();
System.out.println(timeZone.getID());
System.out.println(timeZone.getDisplayName());
Asia/Shanghai
中国标准时间

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • MySQL简化输入小技巧

    MySQL简化输入小技巧

    在这里我将介绍两个使用MySQL数据库时候简化输入的小技巧。
    2011-09-09
  • Mysql的Binlog数据恢复:不小心删除数据库详解

    Mysql的Binlog数据恢复:不小心删除数据库详解

    这篇文章主要介绍了Mysql的Binlog数据恢复,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • mysql 5.1版本修改密码及远程登录mysql数据库的方法

    mysql 5.1版本修改密码及远程登录mysql数据库的方法

    这篇文章主要介绍了mysql 5.1版本修改密码及远程登录mysql数据库的方法,需要的朋友可以参考下
    2017-04-04
  • Windows7 64位安装最新版本MySQL服务器的图文教程

    Windows7 64位安装最新版本MySQL服务器的图文教程

    本文通过图文并茂的形式给大家介绍了Windows7 64位安装最新版本MySQL服务器的教程,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-06-06
  • count(1)、count(*)与count(列名)的执行区别详解

    count(1)、count(*)与count(列名)的执行区别详解

    这篇文章主要介绍了count(1)、count(*)与count(列名)的执行区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • mysql中的保留字段产生的问题

    mysql中的保留字段产生的问题

    我们在使用mysql的时候要注意这方面的问题,一个因为数据库字段命名不当造成的问题检查起来还是相当麻烦的,今天遇到这种问题,花费了很长时间才找到问题所在,这是无语
    2015-04-04
  • MySQL中主键与rowid的使用陷阱总结

    MySQL中主键与rowid的使用陷阱总结

    这篇文章主要给大家总结介绍了关于MySQL中主键与rowid的使用陷阱,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • MySQL如何基于Explain关键字优化索引功能

    MySQL如何基于Explain关键字优化索引功能

    这篇文章主要介绍了MySQL如何基于Explain关键字优化索引功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • MySQL5.6.40在CentOS7 64下安装过程详解

    MySQL5.6.40在CentOS7 64下安装过程详解

    这篇文章主要介绍了MySQL5.6.40在CentOS7 64下安装过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 在MySQL中开启日志记录并排查操作详细步骤记录

    在MySQL中开启日志记录并排查操作详细步骤记录

    MySQL日志管理是数据库系统维护和优化的重要环节,它提供了对服务器运行状态的详细记录,这篇文章主要给大家介绍了关于如何在MySQL中开启日志记录并排查操作的相关资料,需要的朋友可以参考下
    2024-08-08

最新评论