项目场景:
项目的每条sql操作(mysql)都要写入其更新时间,方便后期查错修改,即datalog。问题描述:
项目本地运行没有问题,部署到测试服务器测试也没有问题,但是部署到生产服务器就出现了 获取日期比实际日期少8小时 的bug(测试生产服务器为两个不同的服务器)。原因分析:
1. 服务器的时区错误2. mysql的时区错误
解决方案:
- 服务器的时区错误
-
#date //查看当前的linux系统时间
-
#hwclock --show (注意是双杠,不是单杠) //查看当前linux硬件时间
-
如果发现系统时间和硬件时间不同步,而且硬件时间是正确的,可以用以下命令:
#hwclock --hctosys //把硬件时间同步到系统时间
-
- mysql时区错误
- 可以参考这位大佬的修正方法传送门。但是改完后记得重启项目!
- 在项目的数据库连接加入 ?serverTimezone=Asia/Shanghai ,即jdbc:mysql://ip:3306/database?serverTimezone=Asia/Shanghai 。然后重新部署