这似乎是一个常见的问题,而且我已经搜索了很多但是没有成功地找到解决方案。试过mysql_auto_reconnect和connect_cached但没有帮助。这基本上就是我在这里的代码。 mysql服务器将在30秒空闲后关闭连接。 mysql_auto_reconnect仅在我第一次从服务器断开$ dbh->时(在代码中注释)才有效。 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);
你有什么想法吗?
答案 0 :(得分:0)
您可以尝试操作超时,也许可以将其添加到您的连接中:mysql_connect_timeout = 60
当然,如果查询花了那么长时间,建议您查看sql。