1

我使用 WWW::Mechanize 库来获取 URL 的内容并将它们的数据保存到 mysql 表中。但是当页面的内容太大时,它会给出这个错误信息:

DBD::mysql::st 执行失败:MySQL 服务器已在 F:\crawling\perl_tests\swc2.pl 第 481 行消失。

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

我也添加了这段代码,但它仍然不起作用

$connection->{max_allowed_packet}=1000000000;
4

3 回答 3

7

您使用的是最新的 DBI 和 DBD::mysql 吗?它应该启用 mysql_auto_reconnect。

如果你在 forks 下使用 mysql,你可能需要设置

$dbh->{InactiveDestroy} = 1;
于 2012-05-02T13:29:28.210 回答
2

您可能想查看DBIx::Connector。从文档:

您可以将连接存储在您的应用程序中您可以轻松访问它的某个位置,只要它保持在范围内,它就会尽最大努力维护数据库连接。甚至跨分支(尤其是 DBI 1.614 和更高版本)和新线程,甚至调用 $conn->dbh->disconnect。当您不再需要它时,让它超出范围,数据库连接将被关闭。

于 2012-05-02T15:50:26.303 回答
1

尝试添加

max_allowed_packet=32M

在 MySQL 配置文件中

于 2012-05-26T15:47:34.757 回答