【问题标题】:mysql_tzinfo_to_sql - updating the timezone tables after you already loaded them and other questionsmysql_tzinfo_to_sql - 在加载时区表和其他问题后更新它们
【发布时间】:2020-08-16 12:49:18
【问题描述】:

我只是使用mysql_tzinfo_to_sql 将zoneinfo 数据库加载到mysql 中。他们都进口得很好。

[root@db ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql

我有一些问题似乎找不到答案:

  • time_zone_name 中的名称是否与 PHP 中使用的名称相同?我假设 PHP 使用相同的 /usr/share/zoneinfo 信息,所以名称也会相同,对吧?
  • 它提到当时区数据发生变化时,需要不时地重新填充表。这是通过 yum 更新而更新 tzdata 的时候吗? tzdata 是我的 /usr/share/zoneinfo 信息吗?
  • 如果上述情况属实,则 tzdata 会更新,我需要重新填充我的表...我该怎么做?我可以再次运行[root@db ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql 吗?该命令会覆盖当前存在的信息,还是我需要先手动删除所有表条目?

感谢您提供有关上述内容的任何信息。到目前为止,PHP 中使用的时区名称似乎匹配,但除了一些测试之外,我还没有进一步研究它。至于最后两个......我只是想领先一步,所以如果/当表格需要更新时,我没有问题。

【问题讨论】:

    标签: mysql timezone zoneinfo


    【解决方案1】:

    MySQL 和您的操作系统都使用the IANA time zone database 的时区。

    在许多 Linux 发行版中,这些来自 tzdata 软件包发行版,后者将它们安装到 /usr/share/zoneinfo

    所以,是的——它们都是一样的。

    关于 MySQL 时区表,the documentation 说:

    如果您的系统有自己的 zoneinfo 数据库,请在 zoneinfo 数据库更新时重新加载 MySQL 时区表。

    所以,是的 - 每次更新到最新的 tzdata 包时,您都应该再次运行该命令。

    【讨论】:

    • 再次运行命令会覆盖那里的内容吗?这些表中已有数据?
    • 你在问命令是否是幂等的。是的,应该是。至少,文档中没有说您必须先清除它们。尝试运行它两次,看看会发生什么。 :)
    • 如果你真的想尝试,首先安装旧的 tzdata 试试。然后更新它并再次运行。在两者之间和之后尝试一些tz_convert 语句,并观察差异。您可以查看 tzdata 发行说明,了解每个版本的新增功能。
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2020-04-22
    相关资源
    最近更新 更多