好吧,我已经修好了,不管怎样,我不知道为什么。。。: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/