返回顶部
首页 > 资讯 > 数据库 >解决MySQL时区日期时差8个小时的问题
  • 831
分享到

解决MySQL时区日期时差8个小时的问题

MySQL差8个小时MySQL时区差8个小时 2023-01-04 12:01:12 831人浏览 八月长安
摘要

目录场景:解决:Mysql查出时间相差14小时问题重现问题排查场景: 我们在mysql客户端查询 now() 系统当前日期时间,会发现得到的结果比系统实际日期时间慢8个小时左右,这是由于不同的时区导致的 解决: 1、在

场景:

我们在mysql客户端查询 now() 系统当前日期时间,会发现得到的结果比系统实际日期时间慢8个小时左右,这是由于不同的时区导致的

解决:

1、在 mysql 的服务端的 my.conf 文件中 [mysqld] 节点下设置时区参数

default-time-zone=Asia/Shanghai

2、如果 mysql 的版本是 5.7 配置如下参数

default-time-zone = '+8:00'

3、如果 mysql 服务是由 Docker 创建的容器,需要查看 mysql 容器的系统日期是否正确,如果不正确,需要调整 mysql 容器内的系统日期时间

方式一:

//1、把当前宿主机的时区信息复制到mysql容器的时区中
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器名称或Id:etc/localtime
 
//2、重启mysql服务即可
docker restart 容器名称或Id

方式二:

共享主机的 localtime,创建容器的时候指定启动参数,挂载 localtime 文件到容器内

docker run --name 容器名称 -v /etc/localtime:/etc/localtime

如此,时区不一致的问题就解决了

mysql查出时间相差14小时

问题重现

服务器使用mysql 5.7数据库,线上运行程序时,保存时间相差14小时

问题排查

首先以为是线上linux系统数据库时区问题,特地查看了线上linux数据库时区

Last login: Wed Nov 27 14:39:13 2019 from 192.168.2.147
[root@localhost ~]# date -R
Thu, 28 Nov 2019 08:44:39 +0800
[root@localhost ~]# hwclock
2019年11月28日 星期四 08时44分52秒  -0.938419 秒
[root@localhost ~]# 

检查时区后发现时区设置是正确的,怀疑是线上数据库时区设置问题,检查线上数据库时区设置

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0.03 sec)

发现线上数据库时区设置也是一致,于是在本地重新运行程序,添加断点,监听时间传参变化,断点逐步进行,在保存至数据库前,断点中检查的时间都是正确的,可以确定是数据库时间保存时出现的问题。

在这个地方我自己遇到的问题更尴尬,排查问题时是在同事电脑上进行排查,检查了pom文件中依赖的mysql-connector-Java 版本号是 5.1.46 ,运行时无报错信息,但实际打包项目时使用的是我电脑进行打包,但我电脑中pom文件里mysql-connector-java 版本号写的是runtime,也就是跟着SpringBoot版本选择,我使用的springboot版本号是2.1.5,所以对应的mysql版本jar包文件是8.0的jar包,就是这个问题导致是时间相差了14小时,更改mysql版本号,重新运行,问题解决。

自己在排查问题过程中也发现了类似相关的数据库时间保存相差N小时问题主要出于几种情况:

  • 数据库版本不一致 
  • marven依赖jar包版本与数据库版本不一致
  • mysql时区设置错误
  • 系统时区错误

 到此这篇关于解决MySQL时区日期时差8个小时的问题的文章就介绍到这了,更多相关MySQL差8个小时内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: 解决MySQL时区日期时差8个小时的问题

本文链接: https://lsjlt.com/news/176610.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作