如何在 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安装的机器上安装了时区,即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 控制面板设置带到桌面? [关闭]