好吧,我已经修好了,不管怎样,我不知道为什么。。。: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{}后,它可以工作。。。为什么?

最佳答案

池上的回答是正确的。
您需要调用$sth->finish(),这是隐式完成的,因为它超出了eval{}块的作用域。

关于mysql - MySQL“命令不同步”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27829228/

10-12 01:26