当前位置:  开发笔记 > 编程语言 > 正文

perl dbi在断开连接时重新连接

如何解决《perldbi在断开连接时重新连接》经验,为你挑选了2个好方法。

我搜索过谷歌,但找不到我认为简单问题的答案.

我有一个Perl代码(下面的示例),每3秒获取一次数据,并将接收到的数据更新到MySQL数据库中,但有时MySQL数据库不可用,脚本就会死掉.如果失败,如何再次建立MySQL连接?

use DBD::Mysql;

sub updateMysqlDB{
my $connect = DBI->connect("dbi:mysql:$database:$host", 
                        $user,
                        $pw,
                        {RaiseError => 1}
                        );
$myquery = "My sql query to insrt data into columns";
$query_handle=$connect->prepare($myquery);
$query_handle->execute();
$connect->disconnect;
}

while (1) {

if data received call updateMysqlDB ();

else wait for data { sleep 3 ;}
}

Ted Hopp.. 8

该DBD :: mysql的驱动程序(即DBI使用MySQL数据库)支持的属性mysql_auto_reconnect.要打开它,只需执行即可

$connect->{mysql_auto_reconnect} = 1;

请注意,文档有此警告:

如果使用'lock tables',则不建议将mysql_auto_reconnect设置为on,因为如果DBD :: mysql重新连接到mysql,则所有表锁都将丢失.关闭AutoCommit时会忽略此属性,并且当AutoCommit关闭时,DBD :: mysql将不会自动重新连接到服务器.


Unos.. 7

您还可以查看以下主题:http://www.perlmonks.org/? node_id = 317168

这讨论了处理"MySQL服务器已经消失"问题的方法,但是一些答案也适用于你的问题.除了mysql_auto_reconnect开关之外,您还可以使用那里的建议.



1> Ted Hopp..:

该DBD :: mysql的驱动程序(即DBI使用MySQL数据库)支持的属性mysql_auto_reconnect.要打开它,只需执行即可

$connect->{mysql_auto_reconnect} = 1;

请注意,文档有此警告:

如果使用'lock tables',则不建议将mysql_auto_reconnect设置为on,因为如果DBD :: mysql重新连接到mysql,则所有表锁都将丢失.关闭AutoCommit时会忽略此属性,并且当AutoCommit关闭时,DBD :: mysql将不会自动重新连接到服务器.



2> Unos..:

您还可以查看以下主题:http://www.perlmonks.org/? node_id = 317168

这讨论了处理"MySQL服务器已经消失"问题的方法,但是一些答案也适用于你的问题.除了mysql_auto_reconnect开关之外,您还可以使用那里的建议.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有