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

Posted

技术标签:

【中文标题】如何在 ubuntu 中使用 xampp 填充 mysql 数据库中的区域表【英文标题】:How to populate zone tables in mysql database within ubuntu with xampp 【发布时间】:2016-06-22 05:06:06 【问题描述】:

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

【问题讨论】:

解决这个问题的更好更简单的方法datawookie.netlify.app/blog/2017/08/… 【参考方案1】:

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

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

我稍微调整了创建脚本,现在它可以为我工作了:

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

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

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

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

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

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

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

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

成功

【讨论】:

@hardlyNoticeable 表示您正在尝试将数据插入到已经包含数据的表中。主键 (PK) 或唯一键(UK,通常在外键 FK)上存在冲突。您需要查看错误消息以了解导致问题的表(可能已经填充了多个表)。【参考方案2】:

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

错误信息表示目录无法读取(没有足够的访问权限甚至不存在)。

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

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

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

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

如果mysql_tzinfo_to_sql 在您的mysql 数据库所在的计算机上不可用,则查找已安装mysql_tzinfo_to_sql 的计算机 使zoneinfo 文件夹在该计算机上可用。它只是不同文件夹中的一堆文件,因此您可以将它们以 gzip 文件的形式从一台计算机传输到另一台计算机。在正常的 mysql 安装中,该文件夹应该存在,但可能您的安装不完整,su 随便从任何地方获取它。

执行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 脚本复制到目标机器。

【讨论】:

以上是关于如何在 ubuntu 中使用 xampp 填充 mysql 数据库中的区域表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 xampp 在 ubuntu 中运行 python cgi 脚本

如何在Ubuntu 16.04中使用XAMPP在Rails中使用MySQL

如何在 Xampp 中找到 PHP 可执行文件 - Ubuntu

如何在 Ubuntu 中将 xampp 控制面板设置带到桌面? [关闭]

如何在ubuntu的xampp中更改文档根目录?帮助文档根不工作

如何在 Ubuntu 16.04 上的 XAMPP 中安装较旧的 PHP 版本?