0

这似乎是一个常见问题,我进行了很多搜索,但没有成功找到任何解决我的情况的方法。尝试了 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); 

你有什么主意吗?

4

1 回答 1

0

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

当然,如果查询需要很长时间,则建议查看 sql。

于 2013-04-11T07:24:53.620 回答