【问题标题】:MySQL "command out of sync"MySQL“命令不同步”
【发布时间】:2015-03-05 22:11:11
【问题描述】:

好的,我已经修好了,反正我不知道为什么会这样……: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{} 后,它可以工作...为什么?

【问题讨论】:

标签: mysql perl dbi


【解决方案1】:

ikegami的回答是正确的。

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

【讨论】:

    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 2013-03-10
    • 2013-03-04
    • 2015-04-23
    • 2020-07-02
    • 1970-01-01
    • 2020-05-07
    相关资源
    最近更新 更多