如何使用xampp在ubuntu中的mysql数据库中填充区域表

时间:2016-03-08 09:59:07

标签: mysql ubuntu xampp

我正在尝试根据此文档导入时区:http://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.html

当我尝试通过终端命中第一个命令时,即

mysql_tzinfo_to_sql tz_dir

它说

There were fatal errors during processing of zoneinfo directory 'tz_dir'

当我跑步时:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
然后它返回

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

操作系统: Ubuntu

服务器: XAMPP(有mariadb)

因此,我无法将时区数据导入mysql数据库的区域表。

2 个答案:

答案 0 :(得分:1)

我今天早上尝试在生产服务器上填充时区表(使用CentOS)时也遇到了这个问题。

我通过从开发计算机导出表创建脚本解决了这个问题(在Windows上填充表只需要下载表并将它们复制到正确的目录中)。

我稍微调整了创作脚本,现在它正在为我工​​作:

由于脚本太长,我无法将其发布在我的答案中。

https://drive.google.com/file/d/0B7iwL5F-hwr_YkItRXk2Z1VZdlE/view?usp=sharing

这是一个带注释的版本(但它似乎不起作用,所以请使用没有注释的版本。)

https://drive.google.com/file/d/0B7iwL5F-hwr_dWdjTDREcXNHQmM/view?usp=sharing

脚本运行时间不应超过几秒钟。您可能需要使用root用户才能运行它。

您可以使用此查询来验证安装:

SELECT CONVERT_TZ(CURRENT_DATE(),'UTC','America/Montreal');

如果它返回NULL而不是datetime,则表示脚本失败。

成功

答案 1 :(得分:1)

There were fatal errors during processing of zoneinfo directory 'tz_dir'

错误消息表示无法读取目录(访问权限不足或甚至不存在)。

知道mysql_tzinfo_to_sql程序只是将一堆时区文件转换为可用于安装mysql时区的SQL脚本的工具,您的任务如下:

  • 从某处获取时区文件
  • 执行mysql_tzinfo_to_sql以从这些文件创建SQL脚本
  • 在mysql数据库中执行该SQL脚本。

如果您在不同的计算机之间传输文件,则可以在不同的计算机上执行这些步骤。例如,我在没有完成mysql安装的机器上安装了时区,也就是说,mysql_tzinfo_to_sql不可用,我也无法安装它。

在这种情况下,您可以结合以下步骤:

  • 如果您的mysql数据库所在的计算机上没有mysql_tzinfo_to_sql,那么找一台已安装mysql_tzinfo_to_sql的计算机
  • 使该计算机上的zoneinfo文件夹可用。它只是不同文件夹中的一堆文件,因此您可以将它们以gzip文件的形式从一台计算机传输到另一台计算机。在正常的mysql安装中,这个文件夹应该存在但是你的安装可能不完整,只需从任何地方获取它。
  • 执行mysql_tzinfo_to_sql命令创建如下的SQL脚本:

    mysql_tzinfo_to_sql path-to-your-zoneinfo-folder >install_mysql_zoneinfo.sql

  • 将创建的SQL脚本移动到mysql数据库所在的计算机上*

  • 执行如下脚本:

    mysql --user=root --password=abc123 mysql <install_mysql_zoneinfo.sql

根据需要调整用户名和密码,然后执行脚本。这将使用适当的值填充与时区相关的表,您将能够使用它们:

SELECT convert_tz(NOW(),'UTC','Australia/Melbourne'); 
  • 如果您可以从生成SQL脚本的计算机访问mysql数据库,那么将-h <hostname>命令行参数添加到后续脚本执行程序就足够了,您不必复制SQL脚本到目标机器。