ARTS - Tip 补12.10

一次MySQL时区问题引发的血案

事由

我们的系统是非洲人使用的,所以时区都改了,然后有一个功能是获取当前时间比较,但是页面显示不正常。

分析

然后就在浏览器debug获取时间戳,然后通过js转成日期时间格式,发现仍然会自动转化为当前时区,就把本地时间改成了非洲一样的时区,通过比较发现获取的当前时间比非洲时间慢,说明获取当前时间取得的不对,然后看了这个时间获取方式,是mysql now() 函数产生的,于是去数据库服务器上去看时区,发现数据库时区和数据库服务器时区不一致!

解决

修改MySQL时区和服务器一样,然后问题解决。

注意用 set global time_zone ,然后MySQL 查询可以,用系统查询就不行,需要重启MySQL, 在my.cnf设置时区,然后重启,或者重启服务。