mysql - 无法加载时区?

标签 mysql database

我正在尝试将时区加载到我的 MySql 实例(在 Ubuntu 上运行)中,以便我可以使用 CONVERT_TZ 函数,但是当我运行以下命令时:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

我得到以下输出,当我尝试使用 CONVERT_TZ 时,它仍然返回 NULL:

Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Asia/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Asia/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Asia/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Mideast/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Mideast/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Mideast/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Asia/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Asia/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Asia/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Mideast/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Mideast/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Mideast/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.

有谁知道为什么会发生这种情况?

附言:

我正在使用以下方法转换日期时间:

CONVERT_TZ(NOW(),'UTC', 'PCT')

是否有可能我只是转换不正确,这就是 NULL 结果的原因?

最佳答案

这是 Debian 上 Riyadh* 时区文件的错误:

http://bugs.mysql.com/bug.php?id=20545

推荐的解决方法是简单地忽略警告(如果您当然不需要这些时区):

mysql_tzinfo_to_sql /usr/share/lib/zoneinfo | mysql -uroot --force mysql

使用--force 选项导入TZ 数据后,您将能够使用CONVERT_TZ。这是我刚刚完成的内容的转录:

sh$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p mysql --force 2> /dev/null
Enter password: ********
sh$ mysql -p
Enter password: ********
Server version: 5.1.49-3 (Debian)

mysql> select convert_tz(now(), 'UTC', 'CET');
+---------------------------------+
| convert_tz(now(), 'UTC', 'CET') |
+---------------------------------+
| 2013-08-13 21:04:34             |
+---------------------------------+
1 row in set (0.00 sec)

关于mysql - 无法加载时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216198/

相关文章:

php - 使用 CodeIgniter 从 2 个表中选择 SQL

php - 我如何检查变量是否保存在数据库中?

python - 是否有工具可以帮助将文件视为数据库中的表?

database - 错误 1105 (HY000) : Unknown charset id 255

json - 用于存储和检索小对象的选项 (node.js),是否需要数据库?

database - SQL数据库项目用于部署数据库的端口号

mysql - "Group by"高级SQL查询

php - 查询问题 - 尝试对讨论中的评论进行分组

mysql - 从 txt 加载重复年份的数据,仅包含天和月

用于消息回复系统的 MySQL Advanced ORDER BY Clause