今天在项目中遇到业务更新时间与数据库表中的时间更新字段不一致现象,相差8个小时左右,于是查询数据库系统时间
select sysdate() //查询数据库系统时间命令
果然数据库时间不对,第一时间想到数据库所在的服务器时间可能与网络时间不同步,但是立即想到这个可能性应该为0(因为数据库在阿里云主机上。。。),
随机在服务器(Linux服务器)上敲了date命令,服务器时间的确没错。
后来想到,我的mysql是部署到服务器的docker容器上,于是进入了我的mysql,果然是容器时间不对,于是将服务器上时间文件拷贝到容器中,命令如下:docker cp /etc/localtime [containerId]:/etc/localtime,
其中containerId为启动的容器id,也可以是容器的名称,我的mysql容器名称是mysqlserver,所以具体命令如下:
docker cp /etc/localtime mysqlserver:/etc/localtime
随后在容器中查看时间,可以看到容器时间与所在服务器时间已经保持一致。
-----------------------------2021-05-25---------------------------
今天又遇到这个问题,补充一下:
这次执行 docker cp /etc/localtime [containerId]:/etc/localtime时,出现如下提示:
Error response from daemon: Error processing tar file(exit status 1): invalid symlink "/etc/localtime" -> "../usr/share/zoneinfo/Asia/Shanghai"
经过查找,改为如下命令执行,重启容器即可:
docker cp /usr/share/zoneinfo/Asia/Shanghai [containerId]:/etc/localtime
docker restart [containerId]