前两天写了个小demo,部署到腾讯云上,今天测了一下插入数据的接口,发现插入后的数据时间不对。由于我的mysql是装在docker里的,因此有必要将linux系统时间,docker容器时间,以及mysql时间这三者统一起来。
(一)确认Linux系统时间
首先确认linux系统时间是否与当前时间一致,登录服务器后直接用 date 或者 date -R 即可查看。此处,笔者的linux系统时间与当前时间是吻合的,即无需修改。
date -R
(二)docker容器时间
要查看docker容器时间,首先就是要进入容器中。这里,其实进入容器本来不需要以root用户进入的,但是笔者为了后续在容器中创建文件的需要,所以直接以root用户。(其中e672xxxx 这串是mysql的容器ID)
docker exec -it -u root e6720bc69550 bash
此时发现docker容器的时间与当前时间相比,刚好落后8小时。接下来开始修改容器时间,
1. 在容器中创建文件。如果已有,则忽略此步。
mkdir -p /usr/share/zoneinfo/Asia
2. 回到宿主机,将宿主机里的文件拷贝到容器中。
docker cp /usr/share/zoneinfo/Asia/Shanghai e6720bc69550:/usr/share/zoneinfo/Asia
3. 再次进入容器,拷贝文件。
docker exec -it -u root e6720bc69550 bash
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
4.重新查看docker容器的时间。已调整正确了。
(三)Mysql时间
由于笔者数据库中新插入的数据的【插入时间】设置的是【数据库当前时间】,从navicat上可直观地看到这个【插入时间】也比当前时间落后8个小时。所以数据库的时区肯定是不对的。这一点是笔者在进入数据库之前就已经判断出了。
文章来源地址https://www.toymoban.com/news/detail-484225.html
首先进入docker后,连接mysql,查看mysql当前时区。
默认:time_zone说明mysql使用system的时区,system_time_zone说明system使用CST时区
(注: 以上截图里的时区已经是我设置后的了,所以是正确的)
1.修改mysql时区
set global time_zone = '+8:00'; #修改mysql全局时区为北京时间,即我们所在的东8区。
set time_zone = '+8:00'; #修改当前会话时区
flush privileges; #立即生效
2.重新查看mysql时间
文章来源:https://www.toymoban.com/news/detail-484225.html
到了这里,关于Linux系统时间 vs Docker容器时间 vs 数据库时间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!