无法在' localhost'上连接到MySQL服务器(10055)

时间:2012-02-02 09:25:15

标签: mysql perl

我按顺序运行三个perl脚本。它们中的每一个都连接到Mysql数据库多次,并选择或更新数据库中包含的信息。在运行这三个脚本大约20次之后(和数据库连接/断开连接的次数比这个多很多次),我收到消息'无法连接到'localhost'上的MySQL服务器(10055)。

我已经在其他地方读过,我可以使用mysql_auto_reconnect = 1重新连接到数据库,但是我不能完全确定这是问题所在。当程序崩溃时,我的计算机上的Mysql服务器仍然连接 - 我不必重新启动它。我想知道为什么会这样做,而且我也不完全确定我如何输入'“mysql_auto_reconnect = 1”,就像我这样做时它告诉我DBI->使用旧式语法连接已被弃用。

my $dbh_m= DBI->connect("dbi:mysql:XXX","root","XXX","mysql_auto_reconnect=1")

或死(“选择Trans:$ DBI :: errstr时出错”);

每次连接数据库时是否还需要写这个? (将其放入其中一个连接并不能解决问题,我仍然会收到来自所有其他人的错误消息 - 它不会再次开始运行,然后再重新崩溃)。这是我多次连接/断开连接数据库的问题吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

DBI->connect("dbi:mysql:XXX", "root", "XXX", { mysql_auto_reconnect => 1 })

答案 1 :(得分:1)

您收到了什么错误消息?

你应该做的事情如下:

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 ($@);
}

以防数据库没有响应或连接太多。

答案 2 :(得分:0)

当你的脚本完成时,也许你没有断开与mysql的连接?

在mysql中占用资源。请检查mysql日志以获取线索。

此致

答案 3 :(得分:-1)

如何修复MySQL错误10055 要解决此问题,您需要增加动态端口的数量。 运行以下命令将为您提供50000个动态使用端口。

在Windows Server 2008 R2上 打开命令提示

键入以下内容 netsh int ipv4 set dynamicport tcp start=10000 num=50000
按Enter

键入以下内容 netsh int ipv4 set dynamicport udp start=10000 num=50000
按Enter

键入以下内容 netsh int ipv6 set dynamicport tcp start=10000 num=50000
按Enter

键入以下内容 netsh int ipv6 set dynamicport udp start=10000 num=50000
按Enter