我按顺序运行三个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时出错”);
每次连接数据库时是否还需要写这个? (将其放入其中一个连接并不能解决问题,我仍然会收到来自所有其他人的错误消息 - 它不会再次开始运行,然后再重新崩溃)。这是我多次连接/断开连接数据库的问题吗?
谢谢!
答案 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