我已经用谷歌搜索到了我的能力范围,目前的结果似乎不适用于我。
几天前,管理员对系统进行了一些更改,我不得不每晚运行的脚本停止工作。当我尝试运行脚本时,我会得到以下信息:
PHP Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Path/UpdateDB.php on line 2
PHP Warning: mysql_connect(): No such file or directory in /Path/UpdateDB.php on line 2
PHP Warning: mysql_select_db(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Path/UpdateDB.php on line 3
PHP Warning: mysql_select_db(): No such file or directory in /Path/UpdateDB.php on line 3
PHP Warning: mysql_select_db(): A link to the server could not be established in /Path/UpdateDB.php on line 3
No connection.
我联系了管理员,她说她做了一些更改。当我今天早上运行该脚本时,我刚刚收到了我设置的失败消息,这些消息给了我这个错误:
MySQL 错误第 1 行的列“GameID”的数据被截断
现在我检查了所有其他关于表严格并且我的数据太大的问题,但 GameID 是一个 int,我拥有的最大值是 1737690。
有一次,我将失败设置为回显我的语句,然后手动尝试在 phpmyadmin 中运行它并且它起作用了。所以这让我相信这是它试图使用的路径。
编辑:这是来自管理员的电子邮件:
上次休息时完成了一些更新。OSX 在 /usr/bin/php 安装了 php。我们在 /usr/local/bin/php 安装了一个本地 php 并将其配置为与 mysql 一起使用。您需要确保在 /usr/local/bin/php 中使用 php。
我已经恢复了你的 crontab 文件。我还添加了 MAILTO 和 PATH。暂时全部注释掉。如果您取消注释 UpdateDB.php,您还应该取消注释 MAILTO 和 PATH。MAILTO 会将任何输出发送到您的电子邮件地址。PATH 将确保使用 /usr/local/bin/php 而不是 /usr/bin/php。
#MAILTO=evan.lepolt@gmail.com
#PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/mysql/bin
#0 * * * * cd ~/Path; php UpdateDB.php;
我已经更新了您通过 SSH 访问 ucfilespace.uc.edu 时获得的 PATH。所以它现在首先具有 /usr/local/bin ,因此如果您使用 php 命令,将使用 /usr/local/bin/php 而不是 /usr/bin/php 。
/usr/local/bin/php 将 mysql 套接字定义为 /tmp/mysql.sock。所以你的脚本现在应该通过 cron 和命令行工作。