Mysql 无法加载时区?

Mysql 无法加载时区?,mysql,database,Mysql,Database,我正试图将时区加载到我的MySql实例(在Ubuntu上运行)中,以便使用CONVERT_TZ函数,但当我运行以下命令时: mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql 我得到以下输出,当我尝试使用converttz时,它仍然返回NULL: 警告:无法按时间加载“/usr/share/zoneinfo/Asia/Riyadh87” 区跳过它。警告:无法加载 “/usr/share/zoneinfo/Asia/R

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

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
我得到以下输出,当我尝试使用
converttz
时,它仍然返回
NULL

警告:无法按时间加载“/usr/share/zoneinfo/Asia/Riyadh87” 区跳过它。警告:无法加载 “/usr/share/zoneinfo/Asia/Riyadh88”作为时区。跳过它。 警告:无法按时间加载“/usr/share/zoneinfo/Asia/Riyadh89” 区跳过它。警告:无法加载 “/usr/share/zoneinfo/Mideast/Riyadh87”作为时区。跳过它。 警告:无法按时间加载“/usr/share/zoneinfo/Mideast/Riyadh88” 区跳过它。警告:无法加载 “/usr/share/zoneinfo/Mideast/Riyadh89”作为时区。跳过它。 警告:无法按时间加载“/usr/share/zoneinfo/iso3166.tab” 区跳过它。警告:无法加载 “/usr/share/zoneinfo/posix/Asia/Riyadh87”作为时区。跳过它。 警告:无法将“/usr/share/zoneinfo/posix/Asia/Riyadh88”加载为 时区。跳过它。警告:无法加载 “/usr/share/zoneinfo/posix/Asia/Riyadh89”作为时区。跳过它。 警告:无法加载“/usr/share/zoneinfo/posix/Mideast/Riyadh87” 作为时区。跳过它。警告:无法加载 “/usr/share/zoneinfo/posix/Mideast/Riyadh88”作为时区。跳过 信息技术警告:无法加载 “/usr/share/zoneinfo/posix/Mideast/Riyadh89”作为时区。跳过 信息技术警告:无法加载“/usr/share/zoneinfo/right/Asia/Riyadh87” 作为时区。跳过它。警告:无法加载 “/usr/share/zoneinfo/right/Asia/Riyadh88”作为时区。跳过它。 警告:无法将“/usr/share/zoneinfo/right/Asia/Riyadh89”加载为 时区。跳过它。警告:无法加载 “/usr/share/zoneinfo/right/Mideast/Riyadh87”作为时区。跳过 信息技术警告:无法加载 “/usr/share/zoneinfo/right/Mideast/Riyadh88”作为时区。跳过 信息技术警告:无法加载 “/usr/share/zoneinfo/right/Mideast/Riyadh89”作为时区。跳过 信息技术警告:无法按时间加载“/usr/share/zoneinfo/zone.tab” 区跳过它

有人知道为什么会这样吗

附言:

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

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

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

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

建议的解决方法是忽略警告(当然,如果您不需要这些时区):

mysql_tzinfo_to_sql/usr/share/lib/zoneinfo|mysql-uroot--force mysql
使用
--force
选项导入TZ数据后,您将能够使用
转换\u TZ
。这是我刚才所做工作的抄本:

sh$mysql_tzinfo_to_sql/usr/share/zoneinfo | mysql-uroot-p mysql--force 2>/dev/null
输入密码:********
sh$mysql-p
输入密码:********
服务器版本:5.1.49-3(Debian)
mysql>选择convert_tz(现在(),'UTC','CET');
+---------------------------------+
|转换(现在(),'UTC','CET')|
+---------------------------------+
| 2013-08-13 21:04:34             |
+---------------------------------+
一行一组(0.00秒)

不幸的是,Sylvain的解决方案对我不起作用

我能够通过从我的开发计算机(在Windows上)的
PHPMyAdmin
导出表并稍微调整创建脚本来填充生产服务器的时区表

由于脚本太长,无法在帖子中共享,我将在我的谷歌硬盘上托管它

安装脚本(删除新行和注释):

带注释的脚本:

请确保使用没有注释的版本。注释版本运行大约需要5分钟,最终由于某种原因失败,而剥离版本运行不到5秒


注意:您可能需要以
root
身份运行该脚本。

管道中的第一个命令,即
mysql\u tzinfo\u to\u sql
脚本,如果您不将其直接导入
mysql
中,它会发出一个大而丑陋的.sql文件。那个文件看起来像什么?你需要沙特阿拉伯历史时区数据吗?不,基本上我只需要从UTC转换到PST。我猜你不想让我发布整个丑陋的sql脚本。在.sql文件中是否有我应该查找的特定内容?谢谢您提供的信息。看起来我已经安装了我需要的所有东西,但是由于我正在转换为
PST
而不是
PST8PDT
。@AbeMiessler:D如果对TZ名称有疑问,您可以查询
mysql.time_zone_name
,以便快速检查。如果您的特殊情况是:
从mysql.time_zone_name中选择名称,其中的名称类似于“%PST%”