执行创建“MySQL服务器已经消失”错误
问题描述:
我正在使用PHP脚本,它意味着长时间连续执行(一次性映射脚本)并将数据插入MySQL数据库。该脚本能正常工作,但最终(一两分钟后),它会得到一个错误:执行创建“MySQL服务器已经消失”错误
MySQL server has gone away
我已经改变了INI设置两个MySQL连接超时,并为PHP脚本执行超时,但也发生了变化结果。
我已经制作了一个非常类似的脚本,它在相同的服务器上运行了很长时间,却没有遇到这个错误。
我感谢你的时间,希望你的帮助可以让我解决这个问题,以及将来遇到这个职位的任何其他沮丧的scripter。
答
配置更改后是否重新启动了mysqld? 你是否有足够的记忆力,这样它不会被OOM杀手杀死?
UPDATE:这里是解决方案,你需要设置“等待超时” http://dev.mysql.com/doc/refman/5.0/en/gone-away.html
答
检查mysql服务器设置上的max_allowed_packet。客户端不能发送大于此值的数据包,否则mysql服务器将关闭连接。
这只与查询字符串变得很长时的数据插入有关。这不会影响SELECT,因为服务器会自动放大发送数据包。
好的大小将是您的数据的大小乘以2。由于在发送数据之前经常会转义数据,并且在SQL QUERY中添加了页眉和可能的页脚,因此需要进行乘法运算。
max_allowed_packet的用法是控制服务器内存使用情况并限制DoS攻击。
执行的查询是什么? – 2010-08-27 07:25:41