Mysql数据库时间与系统时间不一致问题排查及解决

 更新时间:2023年06月07日 09:48:05   作者:测试界的飘柔  
最近忽然发现个问题,Mysql数据库时间与系统时间不一致,通过查找相关资料终于解决了,下面这篇文章主要给大家介绍了关于Mysql数据库时间与系统时间不一致问题排查及解决的相关资料,需要的朋友可以参考下

NO.1 产生问题

在我们学习中使用到sysdate这个函数时,发现查出来的日期时间与当前的正确时间不一致,相差8个小时左右,为什么会产生这个问题?又该如何解决?

– 在数据库中使用sysdate()函数查询系统时间

select sysdate();

结果显示:

图片

NO.2 原因分析

原因分析1:第一时间想到的是数据库所在的云服务器时间可能与网络时间不同步,因为数据库是装在云服务器上的,但是这种可能性应该较小,因为购买的阿里云服务器应该不会存在这种问题,一般会自动校对时间。于是先确定云服务器的时间,输入date命令查看云服务器系统时间,结果云服务器显示的时间是正确的,如下图:

原因分析2:排除第一种可能后,又想到Mysql是部署在云服务器的docker容器上的,会不会是docker容器时间不对呢?因此进入容器,查看容器的系统时间。

# 进入容器   d71f18f09a4e:容器id,以自己的容器id为准
docker exec -it d71f18f09a4e /bin/bash
# 查看系统时间
date

图片

果然,容器的时间不对,跟正确的时间相差了8个小时,跟数据库查询的结果是一样的问题。所以SQL查出来的时间是跟随容器的系统时间一致的,因此存在同样的问题。所以我们只要把容器时间修改正确了,那我们通过SQL查询出来的时间不对的问题也就解决了。

NO.3 解决方法

1.通过sql语句,查看系统时区,修改时区来校对时间

– 第一步:查看系统时区

show variables like ‘%time_zone%';

– 第二步:修改时区,并生效

– 修改系统时区

set global time_zone = ‘+08:00';

– 修改当前会话时区

set time_zone = ‘+8:00';

– 立马生效

flush privileges;

– 修改后再次查看

show variables like ‘%time_zone%';

– 第三步:修改后再查看系统时间显示

select sysdate();

第一步:系统时区查询:

图片

时区知识普及: 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。北京时区是东八区,领先UTC八个小时,所以我们的时区为UTC+8。

第二步:修改时区,并生效:

图片

第三步:修改后再查看系统时间:

图片

2.在云服务器上,把云服务器的正确时间文件拷贝到容器的中去,校对容器的时间

# 将服务器上时间文件拷贝到容器  d71f18f09a4e:容器id,以自己的容器id为准
docker cp /usr/share/zoneinfo/Asia/Shanghai  d71f18f09a4e:/etc/localtime
# 重启容器
docker restart d71f18f09a4e
# 查看容器是否运行docker ps
# 进入容器   d71f18f09a4e:容器id,以自己的容器id为准
docker exec -it d71f18f09a4e /bin/bash
# 查看容器的时间
date

**第一步:**复制日志文件后,查看容器时间:

图片

第二步:数据库查询时间:

图片

注意:如果容器时间显示正确,但是数据库查询结果还是不对,则需要关闭客户端(navicat),重新打开后再次查询,基本就不会有问题了。

总结

到此这篇关于Mysql数据库时间与系统时间不一致问题排查及解决的文章就介绍到这了,更多相关Mysql时间与系统时间不一致内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 8.0.21 安装配置方法图文教程

    mysql 8.0.21 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.21 安装配置方法图文教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • MySql下关于时间范围的between查询方式

    MySql下关于时间范围的between查询方式

    这篇文章主要介绍了MySql下关于时间范围的between查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 超详细MySQL8.0.22安装及配置教程

    超详细MySQL8.0.22安装及配置教程

    这篇文章主要介绍了超详细MySQL8.0.22安装及配置教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL数据库使用规范总结

    MySQL数据库使用规范总结

    本篇文章给大家详细分类总结了数据库相关规范,帮助大家发挥出数据库的性能,感兴趣的朋友可以了解下
    2020-08-08
  • Navicat for MySQL(mysql图形化管理工具)是什么?

    Navicat for MySQL(mysql图形化管理工具)是什么?

    这里就给大家介绍一个常用的MySQL数据库管理工具:Navicat for MySQL,需要的朋友可以参考下
    2015-09-09
  • mysql压力测试脚本实例

    mysql压力测试脚本实例

    这篇文章主要介绍了mysql压力测试脚本,实例展示了实现MySQL压力测试的完整方法,需要的朋友可以参考下
    2014-11-11
  • Navicat异地自动备份MySQL方法详解(图文)

    Navicat异地自动备份MySQL方法详解(图文)

    Navicat异地自动备份MySQL方法详解,使用Navicat的需要备份mysql的朋友也方便了
    2012-01-01
  • Win10下mysql 8.0.15 安装配置图文教程

    Win10下mysql 8.0.15 安装配置图文教程

    这篇文章主要为大家详细介绍了Win10下mysql 8.0.15 安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Mysql中关于0值判断的坑及解决

    Mysql中关于0值判断的坑及解决

    这篇文章主要介绍了Mysql中关于0值判断的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • win10下mysql5.7.21安装详细过程

    win10下mysql5.7.21安装详细过程

    这篇文章主要为大家详细介绍了win10下mysql5.7.21安装的详细过程,以及安装Mysql 5.7.21遇到的问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论