[Moscow.pm] $dbh->ping() и хранимые процедуры
Alexandr Alexeev
afiskon на gmail.com
Пт Апр 6 02:22:12 PDT 2012
Сегодня коллега указал мне на интересное поведение модуля DBI. Пример:
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Data::Dumper;
my $dbh = DBI->connect('dbi:mysql:test', 'root', '') or die $!;
# ===
my $sth = $dbh->prepare('call hello()');
$sth->execute() or die $!;
while(my @data = $sth->fetchrow_array()) {
print "data: ".Dumper(\@data);
}
# ===
print "ping: ".Dumper($dbh->ping());
В этом примере $dbh->ping() возвращает ложь
Если запихнуть выделенное место в скоп или написать перед последним print
$sth->finish(), ping вернет истину. Если вместо вызова хранимой процедуры
написать обычный запрос, также получим истину.
Похоже, что проблема проявляется только на MySQL и только при работе с
хранимыми процедурами.
Интересно, почему DBI так себя ведет?
--
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20120406/257f66c4/attachment.html>
Подробная информация о списке рассылки Moscow-pm