如何重新加载时区表以跟上 Aurora MySQL 版本 3 中的时区变化?

问题描述 投票:0回答:0

墨西哥没有按计划在2023年4月恢复使用夏令时(DST);相反,该国家/地区将全年采用标准时间。

目前,我在连接到 Aurora MySQL(版本 3)的商业智能工具 (Metabase) 中定义的查询中使用命名时区,我无法更新

mysql
数据库中的时区表以获取本地时间戳正确。

数据:

id 创建于
1 2023-05-15 22:59:55.211225

示例查询:

select
    id,
    convert_tz(created_at, "UTC", "America/Mexico_City") as local_created_at
from items;

输出(使用过期区域偏移量

-05:00
计算,夏令时):

id local_created_at
1 2023-05-15 17:59:55.211225

预期输出(使用区域偏移量

-06:00
,标准时间):

id local_created_at
1 2023-05-15 14:59:55.211225

作为我应用任何未决维护的第一步,Aurora 引擎升级到版本 3.03.1 并且底层操作系统也被更新。然后,我按照 MySQL 8.0 参考手册(Populating the Time Zone Tables)中描述的说明进行操作,并总结如下:

将 zoneinfo 目录路径名传递给 mysql_tzinfo_to_sql 并将输出发送到 mysql 程序中。

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -h <db-host> -u <master-user> -p mysql

上述命令使用 zoneinfo 数据库(描述时区的文件集)并生成作为输入传递给 mysql 程序的 sql 语句。

我执行命令后,出现如下错误:

第 1 行的错误 1044 (42000):用户“user1”@“%”对数据库“mysql”的访问被拒绝

然后我阅读了有关Aurora MySQL 特权模式的信息,它提出了以下内容:

使用 Aurora MySQL 版本 3,您无法直接修改

mysql
数据库中的表。特别是,您不能通过插入
mysql.user
表来设置用户。相反,您使用 SQL 语句来授予基于角色的权限。您也不能在
mysql
数据库中创建其他类型的对象,例如存储过程。您仍然可以查询
mysql
表。

注意:

user1
是master用户账号,我验证过用户有
rds_superuser_role

mysql amazon-web-services timezone amazon-aurora timezone-offset
© www.soinside.com 2019 - 2024. All rights reserved.