最近有用戶反饋在使用mysql8的過程中,發(fā)現(xiàn)時間錯亂的情況。下面我們探究一下這個問題的成因和解決方法。
首先,我們需要了解mysql8中時間的存儲方式。mysql8中,時間存儲的方式是基于UTC時間的,也就是協(xié)調世界時(Coordinated Universal Time),是不帶時區(qū)信息的。而之前的版本中,時間存儲方式是帶時區(qū)信息的。
mysql>SELECT @@global.time_zone; +--------------------+ | @@global.time_zone | +--------------------+ | SYSTEM | +--------------------+ mysql>SELECT @@session.time_zone; +---------------------+ | @@session.time_zone | +---------------------+ | SYSTEM | +---------------------+
上面這個代碼塊可以看出,mysql8默認使用的是系統(tǒng)時區(qū)。因此,如果在修改系統(tǒng)時區(qū)的時候,不及時修改mysql的時區(qū)設置,就有可能出現(xiàn)時間錯亂的情況。
那么我們該如何解決這個問題呢?
第一種解決方法是修改mysql的時區(qū)設置,可以在mysql的配置文件中添加如下一行代碼:
[mysqld] default-time-zone=+08:00
這樣就將mysql的時區(qū)設置為東八區(qū)了。
如果不想修改mysql的時區(qū)設置,也可以對于當前的會話設置時區(qū),可以使用如下代碼:
SET time_zone = '+08:00';
這兩種方法都可以有效的解決mysql8時間錯亂的問題。