Устранение неполадок в подпрограмме perl и ошибка dbi - PullRequest
0 голосов
/ 22 июля 2011

Получение unable to connect error при вызове моей второй подпрограммы.

Я использую 2 подпрограммы, в которых основные проверки результата подпункта 1, если условие установлено, запускают подпункт 2. Я вижу, что значения являются правильными для запуска sub 2 (делает печать)

Обе сабы очень похожи. Я не уверен, где это терпит неудачу.

#subs

    sub get_flg
    {
      undef $/;
      open (my $FH, "< l.sql") or die "error can't open this file $!";
      my $sth= $dbh->prepare(<$FH>) ||
          die ("Cannot connect to the database: ".$DBI::errstr."\n");
      $sth->execute;
      close $FH;
      my $row = $sth->fetchrow_hashref;
      $sth->finish;
      return $row->{A};
}

sub get_msg
{
  undef $/;
  open (my $FH, "< 2.sql") or die "error can't open this file $!";
  my $sth= $dbh->prepare(<$FH>) ||
      die ("Cannot connect to the database: ".$DBI::errstr."\n");
  $sth->execute;
  close $FH;
  my $row = $sth->fetchrow_hashref;
  $sth->finish;
  return @$row{'B','C'}; 
}


#MAIN:

my $dbh = DBI->connect($cf{dsn},$cf{user},$cf{pw},
      {AutoCommit => 0, RaiseError => 0, PrintError => 0 }) || die ("Cannot connect to the database: ".$DBI::errstr."\n");
my $val = get_flg();
print $val;
$dbh->disconnect();

if ($val == 0 ) {
    print "$val\n"; 
    } elsif
      ($val == 1) {
    print "My val is $val\n";
    my ($val2,$val3) = get_msg();
    print "$val2:$val3\n";    
    exit;
};
$dbh->disconnect;

1 Ответ

2 голосов
/ 22 июля 2011

Вы отключаетесь от базы данных после вызова первой подпрограммы.

my $val = get_flg();
print $val;
$dbh->disconnect();

Удалите $dbh->disconnect, и вы должны быть в порядке.

...