• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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
    中国标准时间

    总结

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

    您可能感兴趣的文章:
    • Docker的MySQL容器时区问题修改
    • 关于Java中的mysql时区问题详解
    • MySQL查看和修改时区的方法
    • MySQL timestamp的类型与时区实例详解
    • MySQL修改时区的方法小结
    • 详解MySQL查询时区分字符串中字母大小写的方法
    • mysql时区问题
    • 有关 PHP 和 MySQL 时区的一点总结
    • mysql解决时区相关问题
    上一篇:MySQL 与 Elasticsearch 数据不对称问题解决办法
    下一篇:5个保护MySQL数据仓库的小技巧
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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