You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Aurora MySQL 3时区表更新失败:权限问题与墨西哥时区适配

解决Aurora MySQL 3中墨西哥时区夏令时更新问题

问题概述

墨西哥自2023年4月起取消夏令时(DST),全年采用UTC-06:00标准时间,但Aurora MySQL 3默认的America/Mexico_City时区数据未同步更新,导致执行convert_tz查询时返回过时的UTC-05:00偏移。同时,Aurora MySQL 3禁止直接修改mysql库的时区表,即使拥有rds_superuser_role的主账号也无法通过mysql_tzinfo_to_sql命令更新时区数据。

解决方案

1. 利用AWS RDS官方更新机制

AWS会定期推送时区规则更新到RDS实例,可通过以下方式同步:

  • 重启Aurora实例:重启后实例会加载最新的时区数据(注意提前评估业务影响,选择低峰时段操作)
  • 升级数据库引擎版本:将Aurora MySQL 3升级到最新可用版本,新版本通常包含更新后的时区规则

2. 临时硬编码偏移值

如果无法立即重启或升级,可直接在查询中使用固定偏移替代命名时区:

select id, convert_tz(created_at, "UTC", "-06:00") as local_created_at from items;

或使用时间加减函数:

select id, date_sub(created_at, interval 6 hour) as local_created_at from items;

3. 自定义时区映射表(长期替代方案)

创建自定义表维护最新时区规则,避免依赖内置时区数据:

  • 创建自定义时区表:
CREATE TABLE custom_timezones (
    timezone_name VARCHAR(64) PRIMARY KEY,
    utc_offset VARCHAR(10) NOT NULL
);
  • 插入墨西哥时区的最新规则:
INSERT INTO custom_timezones VALUES ('America/Mexico_City', '-06:00');
  • 查询时关联该表获取正确偏移:
SELECT 
    i.id, 
    CONVERT_TZ(i.created_at, 'UTC', ct.utc_offset) AS local_created_at
FROM items i
JOIN custom_timezones ct ON ct.timezone_name = 'America/Mexico_City';

注意事项

  • 优先选择AWS官方的更新方式,避免手动维护时区规则带来的误差
  • 临时硬编码方案仅适合短期过渡,长期需确保数据库时区数据与官方标准同步

内容的提问来源于stack exchange,提问作者yanielv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:53:12