MySQL“命令不同步”

时间:2015-01-07 21:48:46

标签: mysql perl dbi

好的,我已经修好了,无论如何我不知道它为什么会起作用......:P

我的第一个代码是:

my ($sth,$rc);
eval{
  $sth = $dbh->prepare('CALL mysp(?,?)');
  $rc = $sth->execute(1,2);
  if    ($rc eq '1'){# ok}
};

if($@){
  $dbh->rollback;
  warn $@;
}else{
  $dbh->commit;
}

它停止了mysql错误"命令不同步"在提交

eval{
  my $sth = $dbh->prepare('CALL mysp(?,?)');
  my $rc = $sth->execute(1,2);
  if($rc eq '1'){# ok}
};

if($@){
  $dbh->rollback;
  warn $@;
}else{
  $dbh->commit;
}

$sth$rc本地化为eval{}之后,它有效吗?为什么?

1 个答案:

答案 0 :(得分:0)

池上的回答是正确的。

你需要调用$ sth-> finish(),这是隐式完成的,因为它超出了eval {}块的范围。