我正在尝试根据以下文档导入时区: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条答案
按热度按时间2ledvvac1#
这个
错误消息表示无法读取目录(没有足够的访问权限或甚至不存在)。
知道
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
如果需要,请调整用户名和密码,脚本将被执行。这将用适当的值填充时区相关的表,您将能够使用它们:如果您可以从生成sql脚本的计算机访问mysql数据库,那么添加
-h <hostname>
命令行参数,这样就不必将sql脚本复制到目标机器上。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
用户可以运行它。您可以使用此查询来验证安装:
如果它回来了
NULL
而不是datetime
,表示脚本失败。好的成功