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を有効にする必要があります。

フォークの下で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 に答える