我正在按顺序运行三个perl脚本。它们中的每一个都多次连接到Mysql数据库,并选择或更新数据库中包含的信息。在运行这三个脚本大约20~次(与数据库连接/断开连接的次数比这多得多)之后,我收到消息'Can't connect to MySQL server on 'localhost‘(10055)。
我在其他地方读到过,我可以使用mysql_auto_reconnect=1让它重新连接到数据库,但是我不完全确定这就是问题所在。当程序崩溃时,我计算机上的Mysql服务器仍然连接-我不必重新启动它。我想知道它为什么这样做,而且我也不完全确定我是如何放入“”mysql_auto_reconnect=1“”的,因为当我这样做时,它会告诉我使用旧样式语法的DBI->connect已被弃用。
my $dbh_m= DBI->connect("dbi:mysql:XXX","root","XXX","mysql_auto_reconnect=1")or die(“选择传输错误:$DBI::errstr");
我是否也需要在每次连接到数据库时都写入这段代码?(将它放入其中一个连接并不能解决问题,我仍然从所有其他连接收到错误消息-它不会再次开始运行,然后再次崩溃)。这是我多次连接/断开数据库的问题吗?
谢谢!
发布于 2012-02-02 19:10:00
您得到了什么错误消息?
您可能应该这样做:
my $dbh;
{
local $@;
do {
eval {
$dbh = DBI->connect("dbi:mysql:XXX", "root", "XXX", { mysql_auto_reconnect => 1 })
};
if ( $@ ) {
warn "Error: $DBI::errstr\n";
warn "Trying to reconnect in 5 sec.\n";
sleep 5;
}
} while ($@);
}以防数据库没有响应或有太多连接。
发布于 2012-02-02 17:32:53
DBI->connect("dbi:mysql:XXX", "root", "XXX", { mysql_auto_reconnect => 1 })发布于 2012-02-03 18:03:56
也许当你的脚本结束时,你没有断开与mysql的连接?
它正在消耗mysql中资源。请查看mysql日志中的线索。
致以敬意,
https://stackoverflow.com/questions/9109830
复制相似问题