本文主要給大家介紹遇到MySQL timezone帶來數(shù)據(jù)不一致問題怎么處理,文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下遇到mysql timezone帶來數(shù)據(jù)不一致問題怎么處理吧。
成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)站定制、營銷型網(wǎng)站、成都小程序開發(fā)、微信公眾號開發(fā)、網(wǎng)站推廣服務,提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為墻體彩繪企業(yè)提供源源不斷的流量和訂單咨詢。
mysql> select *,from_unixtime(create_time) from 表名 where source_id=xxx\G *************************** 1. row *************************** id: xxx uid: xxx source_id: xxx create_time: 1495324892 type: 0 source_status: 0 nick_name: 環(huán)境監(jiān)控組-xxx start_time: 1495324883 remark: 忽略視頻 pre_check_status: 0 source: 3 from_unixtime(create_time): 2017-05-21 00:01:32 1 row in set (0.00 sec)
因為運營庫是2主2從,我對比了主從的數(shù)據(jù),發(fā)現(xiàn)確實不一樣,一個是早上8點,另外一個是凌晨,使用了from_unixtime函數(shù),結(jié)果相差8個小時,比較像是時區(qū)的問題
mysql> select from_unixtime(1495324892); +---------------------------+ | from_unixtime(1495324892) | +---------------------------+ | 2017-05-21 08:01:32 | +---------------------------+ 1 row in set (0.00 sec) mysql> select from_unixtime(1495324892); +---------------------------+ | from_unixtime(1495324892) | +---------------------------+ | 2017-05-21 00:01:32 | +---------------------------+ 1 row in set (0.00 sec)
懷疑是linux機器的時區(qū)問題,但查詢發(fā)現(xiàn)都是一樣的
Thu May 25 15:11:29 CST 2017
既然與linux時區(qū)無關(guān),那應該跟MySQL的時間有關(guān)了,再次分別查詢主從的時間
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2017-05-25 15:12:28 | +---------------------+ 1 row in set (0.00 sec) mysql> select now(); +---------------------+ | now() | +---------------------+ | 2017-05-25 07:09:31 | +---------------------+ 1 row in set (0.00 sec)
果然是MySQL的時間問題
mysql> show variables like "%time_zone%"; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | HKT | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec) mysql> show variables like "%time_zone%"; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | UTC | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec)
發(fā)現(xiàn)一個MySQL處于UTC時間,世界標準時間,而另外一個是香港時間,中國是東八區(qū),比世界標準時間多8個小時,這就解釋了為什么8點打卡,卻顯示在凌晨上班。于是把有問題的MySQL,重新修改時區(qū)
set global time_zone = '+8:00'; set time_zone = '+8:00'; flush privileges;
看完以上關(guān)于遇到mysql timezone帶來數(shù)據(jù)不一致問題怎么處理,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識信息 ,可以持續(xù)關(guān)注我們的行業(yè)資訊欄目的。