一、常用时间表示
GMT(Greenwich Mean Time):格林威治时间,格林威治被定义为了\(0^o\) 经线开始的地方,地球每15进度分为一个时区,共24个时区,相邻时区相差1个小时.中国位于东八区,全国统一采用北京时间,比GMT时间快8小时
UTC(Coordinated Universal Time):世界协调时间,由于使用了原子钟,是比GMT更为精确的计时.
CST(China Standard Time):中国标准时间,以北京时间为标准,比UTC时间多8个小时
二、Docker中的时间
之前旧的数据库由于服务器到期而被删了,后来自己又通过docker重新装了一个5.6版本的数据库.后来在项目中意外地发现所用的时间居然是错误的.当前时间是2021/3/12 14:21
,使用SELECT NOW()
指令查看时间 ,可以看到时间刚好差了8个小时.
为了了解mysql的时间配置,我们可以使用show variables like "%time_zone%"
命令查看相关的配置 .根据第一块内容可以了解到是由于直接采用了UTC时间所以才导致时间的误差,解决的办法是修改相应的配置文件,在其后添加default-time_zone='+8:00'
即可.这样做确实是解决了问题.
然而,很快我发现根本原因并不在于Mysql自身.因为在同学的主机上使用相应的指令却发现时间是正确的,显然Mysql的时间大概率是和操作系统相适应的,所以我猜测根本问题还是docker生成的容器(也可以相当于一台主机)时间有问题.果然,在主机上使用date命令发现确实如此.根据相关的blog,在/usr/share/zoneinfo/Asia文件夹下找到Shanghai时区的配置,通过cp -i Shanghai /etc/localtime
命令直接对本地的时区进行了覆盖,将对应的容器restart之后,成功解决!
posted @
2021-03-12 15:22
Arno_vc
阅读(
340 )
评论()
编辑
收藏
举报