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

holgip5t  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(837)

我正在尝试根据以下文档导入时区: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 数据库。

2ledvvac

2ledvvac1#

这个

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

错误消息表示无法读取目录(没有足够的访问权限或甚至不存在)。
知道 mysql_tzinfo_to_sql 程序只是一个工具,可以将一堆时区文件转换为sql脚本,您可以使用该脚本安装mysql的时区,您的任务如下:
从某处获取时区文件
执行mysql\u tzinfo\u to\u sql,从这些文件创建一个sql脚本
在mysql数据库中执行sql脚本。
如果在不同的计算机之间传输文件,则可以在不同的计算机上执行这些步骤。例如,我在一台mysql安装未完成的机器上安装了时区,也就是说, mysql_tzinfo_to_sql 不可用,我也无法安装。
在这种情况下,您可以结合以下步骤:
如果 mysql_tzinfo_to_sql 在mysql数据库所在的计算机上不可用,请查找 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=123 mysql <install_mysql_zoneinfo.sql 如果需要,请调整用户名和密码,脚本将被执行。这将用适当的值填充时区相关的表,您将能够使用它们:

SELECT convert_tz(NOW(),'UTC','Australia/Melbourne');

如果您可以从生成sql脚本的计算机访问mysql数据库,那么添加 -h <hostname> 命令行参数,这样就不必将sql脚本复制到目标机器上。

ldfqzlk8

ldfqzlk82#

我今天早上在尝试填充生产服务器上的时区表(使用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 ,表示脚本失败。
好的成功

相关问题