Сервер MySQL ушел во время сканирования в Perl

Я использую библиотеку 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;

person perloc    schedule 02.05.2012    source источник


Ответы (3)


Используете ли вы последние версии DBI и DBD::mysql? У него должен быть включен mysql_auto_reconnect.

Если вы используете mysql в форках, вам может потребоваться установить

$dbh->{InactiveDestroy} = 1;
person Fayland Lam    schedule 02.05.2012

Вы можете посмотреть на DBIx::Connector. Из документов:

Вы можете сохранить соединение где-нибудь в своем приложении, где вы можете легко получить к нему доступ, и пока оно остается в области действия, оно будет изо всех сил пытаться поддерживать соединение с базой данных. Даже через форки (особенно с DBI 1.614 и выше) и новые потоки, и даже вызовы $conn->dbh->disconnect. Когда он вам больше не нужен, позвольте ему выйти из области действия, и соединение с базой данных будет закрыто.

person oalders    schedule 02.05.2012

Попробуйте добавить

max_allowed_packet=32M

в конфигурационном файле MySQL

person Kostia Shiian    schedule 26.05.2012