2012-05-19 70 views
1

可能重复:
MySQL server has gone away during crawling in Perl如何管理的Perl数据库连接到MySQL服务器

我使用下面的脚本来创建数据库连接到我的MySQL服务器。

my $dsn = "dbi:mysql:dbname=$dbname;$dbhost"; 
my $dbh = DBI->connect(
    $dsn, $dbuser, 
    $dbpasswd, 
    { 
     PrintError   => 1, 
     Warn    => 1, 
     AutoCommit   => 1, 
     ShowErrorStatement => 1 
    } 
); 

使用此连接的主脚本是长时间运行的脚本。在执行过程中有时会出现错误信息,失败。

MySQL server has gone away 

我是新来Perl,而现在无法看到任何问题与数据库的连接。

+0

它看起来不错,并且错误消息表明问题*可能不是您进行连接的方式;可能需要更多的细节才能得出问题的照片。 (你是否打开几个连接而不关闭它们? - 在MySql中有一个最大连接限制...是你的'$ dbhost'总是可用的? - 网络问题?......需要更多细节) – ShinTakezou

+0

不,这是单个连接实例并且基于某些条件,此连接用于获取数据。 – Shades

+0

是否解答了用户的问题?我们不知道,但他们可能会这样做。 – ShinTakezou

回答

0

请看一看这个线程:http://www.perlmonks.org/?node_id=317168

此讨论应对“MySQL服务器消失”问题的方式。基本上你需要检查$dbh的状态之前触发你的查询。

$dbh ||= DBI->connect("connection string", "username", "password"); 
相关问题