Mysql 如何在Apache::DBI中禁用ping?
在Mysql 如何在Apache::DBI中禁用ping?,mysql,perl,persistence,dbi,mod-perl2,Mysql,Perl,Persistence,Dbi,Mod Perl2,在Apache::DBI中禁用连接验证时遇到问题 从: Apache::DBI->setPingTimeOut($data\u源、, $timeout) 这将配置ping的使用 方法来验证连接。 将超时设置为0将始终保持不变 使用验证数据库连接 ping方法(默认)。设定 超时
Apache::DBI
中禁用连接验证时遇到问题从: Apache::DBI->setPingTimeOut($data\u源、, $timeout) 这将配置ping的使用 方法来验证连接。 将超时设置为0将始终保持不变 使用验证数据库连接 ping方法(默认)。设定 超时<0将取消激活 验证数据库句柄 我尝试使用与
connect()
中相同的$data\u源调用setPingTimeOut
,但没有成功。是否有人成功禁用了ping?为了澄清这一点,有:
注意“健全性检查”。因此,大写为“DBI:”的数据源名称的ping超时将被静默忽略。您可以发布$data\u源吗?(对任何机密都进行了适当的模糊处理。)@martin:I使用以下dsn连接:
DBI:mysql:database=dbname;host=localhost
。我用$timeout=-1尝试了这个,但是没有用。我还在代码中尝试了dbi:mysql:dbname
,看起来只有与regexp/dbi:\w+:.*/匹配的dsn才能成功注册ping超时。你的第二个dsn看起来似乎有道理。请注意setPingTimeOut函数中的注释“使用没有在中指定属性设置的DSN”。@martin:似乎是这个正则表达式匹配导致了这个问题。我将dsn改为dbi:mysql:database=dbname;host=localhost
它可以工作。
# use a DSN without attribute settings specified within !
sub setPingTimeOut {
my $class = shift;
my $data_source = shift;
my $timeout = shift;
# sanity check
if ($data_source =~ /dbi:\w+:.*/ and $timeout =~ /\-*\d+/) {
$PingTimeOut{$data_source} = $timeout;
}
}