Bootstrap

MySQL 主从同步报错:`Unknown or incorrect time zone` 问题全解析

MySQL 主从同步报错:Unknown or incorrect time zone 问题全解析

前言

当你在配置 MySQL 主从同步时,如果遇到以下错误提示,是不是感觉有点懵?

Error 'Unknown or incorrect time zone: 'US/Pacific'' on query. Default database: ''. Query: 'flush privileges', Error_code: 1298

这个错误表面上是和时区有关,但其实问题的背后是“主从之间的时区数据不一致”。别急,今天我们用通俗的语言,把问题来龙去脉和解决方案聊透彻!


为什么会出这个错?

MySQL 的很多操作,比如时间函数 (NOW())、时间戳转换,或者事件调度器,都需要用到时区信息。如果时区配置有问题或者数据库中缺少时区数据,MySQL 就会犯“选择困难症”,进而报错。

具体来说,这个错误可能有以下几个原因:

  1. 时区数据没有加载到 MySQL 数据库
    MySQL 的时区数据并不是开箱即用的,需要你手动加载。如果数据缺失,就会导致 MySQL 不认识 US/Pacific 这种时区。

  2. 主库和从库的时区设置不一致
    如果主库用了 US/Pacific 这种具体时区,而从库没配置或者时区数据不全,主从同步的时候肯定就会出问题。

  3. 同步过程中直接引用了未识别的时区
    例如主库执行了以下语句:

    SET time_zone = 'US/Pacific';
    

    结果从库不认识 US/Pacific,报错了。


解决方法

别担心,这个问题很好解决!我们分几个简单步骤,帮你搞定它。


1. 加载时区数据到 MySQL
;