最近發現MySQL用timestamp自動設定的現在時間CURRENT_TIMESTAMP,會慢八個小時,紀錄一下怎麼解的:
解決MySQL用timestamp自動設定的現在時間,會慢八個小時的問題。
暫時性解法:mysql > set global time_zone='+8:00'; // UTC+8為台灣區的時間
設定這個之後,不管是未來新增的資料還是以前就存在的,timestamp都會更正為正確的。
注意: 此方法是暫時性的,重啟後就會失效!
永久性解法:
主要是要修改mysql的設定檔,以下以laradock為例:
在Laradock/mysql/my.cnf檔案最下面加入:
default-time_zone = '+8:00'
若改了之後發現無效,需把mysql資料刪掉重啟一次! (看設定laradock映射到host的mysql data路徑在哪,這個設定在: Laradock/.env中的DATA_PATH_HOST)
cd到該路徑後,刪掉整個mysql資料夾: $ rm -rf mysql
注意: 刪掉mysql資料夾前記得把DB備份,以免貴重資料遺失!
之後laradock重開時區設定就不會再失效了!
另外我也順便改了Linux時區與MySQL log時區。
更改 CentOS Linux 系統時區:
$ timedatectl set-timezone Asia/Taipei
解決MySQL寫入log的時區問題:
在my.cnf中加入 log_timestamps=SYSTEM
重啟mysql
Note: centos7 my.cnf預設在/etc/my.cnf 改完記得restart db.
本筆記參考:
1. https://blog.gtwang.org/linux/centos-linux-change-system-timezone-command-tutorial/
2. https://medium.com/@justinlee_78563/%E9%97%9C%E6%96%BC%E6%99%82%E5%8D%80-4bfada7bd23d
3. https://blog.csdn.net/u013080278/article/details/77926149
4. https://twgreatdaily.com/7V08Pm4BMH2_cNUgTa3H.html
5. https://www.twblogs.net/a/5c4abf61bd9eee6e7e069f81
6. https://tn710617.github.io/zh-tw/laradock/