在Perl爬行时MySQL服务器已消失(MySQL server has gone away dur

2019-07-29 05:24发布

我使用WWW ::机械化图书馆获得的URL的内容和他们的数据保存到MySQL表。 但是,当页面的内容太大,它给出了这样的错误信息:

DBD :: mysql的:: ST执行所失败:MySQL服务器以F消失:\爬行\ perl_tests \ swc2.pl线481。

:例如,当我试图提取该页面的内容引发此错误https://www.e-conomic.com/secure/api1/EconomicWebService.asmx?wsdl

我将此代码为好,但它仍然无法正常工作

$connection->{max_allowed_packet}=1000000000;

Answer 1:

您是否正在使用最新的DBI和DBD :: mysql的? 它应启用mysql_auto_reconnect。

如果您使用下叉MySQL,你可能需要设置

$dbh->{InactiveDestroy} = 1;


Answer 2:

你可能想看看DBIx ::连接器 。 从文档:

您可以某处存储连接在你的应用程序,你可以轻松地访问它,只要它仍然在范围,它会尝试其最大努力维护一个数据库连接。 甚至跨越叉(尤其是DBI 1.614或更高版本)和新主题,甚至调用$ conn-> dbh->断开。 当你不需要它了,让它走出去的范围和数据库连接将被关闭。



Answer 3:

尝试添加

max_allowed_packet=32M

在MySQL配置文件



文章来源: MySQL server has gone away during crawling in Perl