gpt4 book ai didi

perl - 重复的DBI连接不适用于Perl 5.24.0中的词法变量

转载 作者:行者123 更新时间:2023-12-04 12:57:22 26 4
gpt4 key购买 nike

当我将Perl环境从5.16.0切换到5.24.0时,出现了一种我无法理解的奇怪行为。这段代码

use DBI;

my $conn = 'dbi:ODBC:sqlserver_xxxx';
my $userid = 'dw_select';
my $passwd = 'xxxx';

for ( 1 .. 100 ) {
warn "start try $_";
my $dbh = DBI->connect($conn, $userid, $passwd, { RaiseError => 1 } );
warn "end try $_";
}

在5.16.0上运行良好,但是切换到5.24.0时,我得到了以下结果:
start try 1 at test_con.pl line 9.
end try 1 at test_con.pl line 11.
start try 2 at test_con.pl line 9.
end try 2 at test_con.pl line 11.
start try 3 at test_con.pl line 9.
DBI connect('sqlserver_xxxx','dw_select',...) failed:
Unable to fetch information about the error at test_con.pl line 10.

进行此修改后,它将再次正常运行:
use DBI;

my $conn = 'dbi:ODBC:sqlserver_xxxx';
my $userid = 'dw_select';
my $passwd = 'xxxx';

my $dbh;
for ( 1 .. 100 ) {
warn "start try $_";
$dbh = DBI->connect($conn, $userid, $passwd, { RaiseError => 1 } );
warn "end try $_";
}

你们中有人对此有解释吗?

最佳答案

感谢您的有用建议!在perl 5.16.0上,我使用了DBI 1.631,在perl 5.24.0上,我使用了DBI 1.636。我没有考虑过两种环境下的不同DBI版本。使用断开连接的提示也起作用,但是我仍然对这两个DBI版本的不同行为感到惊讶。

关于perl - 重复的DBI连接不适用于Perl 5.24.0中的词法变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43112595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com