perl + mysql在查询期间丢失与MySQL服务器的连接

时间:2013-04-11 06:57:17

标签: mysql perl dbi

这似乎是一个常见的问题,而且我已经搜索了很多但是没有成功地找到解决方案。试过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); 

你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试操作超时,也许可以将其添加到您的连接中:mysql_connect_timeout = 60

当然,如果查询花了那么长时间,建议您查看sql。