这似乎是一个常见问题,我进行了很多搜索,但没有成功找到任何解决我的情况的方法。尝试了 mysql_auto_reconnect 和 connect_cached 但没有帮助。这基本上是我在这里的代码。mysql 服务器会在闲置 30 秒后关闭连接。mysql_auto_reconnect 仅在我第一次 $dbh->disconnect 从服务器时才有效(在代码中注释)。connect_cached 方法在这里有效,但我仍然在 while 循环中使用 connect_cached 方法收到“丢失连接”消息。
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);
你有什么主意吗?