Perl的DBD :: ODBC回滚无效用在自动提交启用(perl DBD::ODBC rollba

2019-10-16 13:22发布

我目前有类似下面的方框。 所以用这个我们设置自动提交关闭,并做了提交/回滚。 现在在回退行,我们得到一个失败说“回滚无效与启用自动提交”。 这怎么可能发生,因为自动提交确实是由begin_work禁用。 这个问题是不存在很长一段时间,它是群体性突发。

在进一步调查,我发现update_sql1创建#temp表,并update_sql2,update_sql3,update_sql4查询同一#temp表,并与无效的对象名称#TEMP'的错误是失败。 立即控制流向,如果($ @),其中$胸径 - > {}自动提交设置为1。首先它真的奇怪,为什么update_sql2及以后计数找不到对象#TEMP,当update_sql1确实是成功的。

任何指针?

====

$ dbh-> db_Main() - > begin_work;

eval {

 $dbh->do($update_sql1);
 $dbh->do($update_sql2);
 $dbh->do($update_sql3);
 $dbh->do($update_sql4);
 $dbh->commit;
 1;
}

if ($@) {
 $logger->info("inside catch");
 $logger->info("autocommit is $dbh->{AutoCommit}");
 $dbh->rollback;

}

===

下面是完整的错误信息

Issuing rollback() due to DESTROY without explicit disconnect() of DBD::ODBC::db handle ..
rollback ineffective with AutoCommit enabled ...

Answer 1:

在自动提交时, begin启动一个事务,这是自动提交。 你必须关闭自动获得一个交易。



文章来源: perl DBD::ODBC rollback ineffective with AutoCommit enabled at