我有一个脚本,它试图记录一些数据(通常在200-300kb左右的时间)。它已经运行了相当长一段时间了。我不知道对MySQL服务器或处理服务器上的PHP进行了任何配置更改。昨天,下面的代码块开始运行不正常。两天前,"$sqlBucket“查询还运行得很好。现在,它失败了,服务器返回"MySQL mysql_error已消失“。我在第一个if代码块中添加了调试,它会输出:
The Link Is Down
Link still down代码:
if (!mysql_ping($conn)) {
echo "The Link Is Down!\n";
mysql_close($conn);
if (!($conn = mysql_connect($hostname,$username,$password))) echo "Fail " . $mysql_error() . "\n";
mysql_select_db($db,$conn);
if (!mysql_ping($conn)) echo "Link still down\n";
}
if (!mysql_query($sqlBucket, $conn)) {
echo "Could not execute: {$sqlBucket}" . mysql_error() . "\n";
}如果任何人对需要检查、调试、重新配置等有任何想法,我已经没有想法了。谢谢。
编辑:附加信息
该脚本在大约3秒内执行并失败。
MySQL服务器上的wait_timeout值为28800。
我能够通过命令行成功地发送查询。
我在mysql_connect函数上添加了一个检查,它报告成功(至少我没有在输出中得到“失败”)。
发布于 2013-01-24 12:29:21
看看表的结构和索引--随着表的增长,可能需要更长的时间来写入数据。200-300 kB听起来是一个相当大的数据量,而且会很快积累起来(每3-4次更新1 MB )。
此外,启用您的MySQL slow query log以准确地查看系统中速度缓慢的位置。
发布于 2013-01-29 00:24:01
验尸报告:
显然,这个问题的解决方案与我收到的错误代码没有多大关系。结果,为了腾出一些空间,我移走了一张多余的桌子。嗯,我没有意识到的是,另一个开发人员有一个触发器正在填充这个表。触发器被调用,以便在我参与查询的表上的插入位于我在原始问题中引用的代码块下面的块中。我注意到的是,代码在第一次执行得很好,然后就失败了。发生的情况是,触发器错误以某种方式终止了与服务器的连接。删除触发器后,脚本开始正常运行。
我仍然不确定为什么重做连接不允许它像第一次迭代时那样继续进行和表现。
https://stackoverflow.com/questions/14493755
复制相似问题