Это обычная проблема, и я много искал, но не нашел решения для моей ситуации. Пробовал mysql_auto_reconnect и connect_cached, но не помог. Это в основном код, который у меня есть. Сервер mysql закроет соединение после 30 секунд бездействия. Функция mysql_auto_reconnect работает только тогда, когда я сначала $ dbh-> отключается от сервера (прокомментирован в коде). Метод connect_cached работает здесь, но я все еще получил сообщение «потерянное соединение», используя метод connect_cached в цикле while.perl + mysql Потерянное соединение с сервером MySQL во время запроса
my $dbh = DBI->connect_cached($mysql_data_source, $mysql_username, $mysql_passwd, {'RaiseError' => 1});
$dbh->{AutoInactiveDestroy} = 1;
$dbh->{mysql_auto_reconnect} = 1;
print strftime('%F %T', localtime());
print "\n";
#$dbh->disconnect();
sleep 30;
$dbh = DBI->connect_cached($mysql_data_source, $mysql_username, $mysql_passwd, {'RaiseError' => 1});
print strftime('%F %T', localtime());
my $sql = "some sql";
my $hashref = $dbh->selectall_hashref($sql, "id");
my $info_hashref = $dbh->{mysql_dbd_stats};
print Dumper($info_hashref);
print Dumper($hashref);
У вас есть идея?
mysql_auto_reconnect и $ dbh-> ping() работает. DBD :: Safe - лучший выбор. – dezhi