我試圖做一個存儲過程的調用從在一個事務中它的簡化形式:DBI begin_work不與存儲過程調用工作
my $dbh= DBI->connect(............ );
my $sth = $dbh->prepare("call sp_get_workitems (1,1)");
$dbh->begin_work or die $dbh->errstr;
$sth->execute();
my ($result)= $sth->fetchrow_array();
$dbh->commit;
本提供了以下錯誤:
DBD driver has not implemented the AutoCommit attribute
如果我更換$dbh->{'AutoCommit'} = 0;
的begin_work聲明(在準備之前或之後),我得到這個錯誤:
DBD::mysql::db commit failed: Commands out of sync; you can't run this command now
如果我用一個簡單的select語句替換存儲過程調用,它一切正常。
存儲過程包含許多更新,並用select語句完成。 當然,如果我能在處理過程中處理事務,那麼我將需要在發生回滾時執行一些Perl代碼。
我使用的是Windows 7中的activeperl和運行的Centos與DBI 1.616安裝了亞馬遜的雲實例,發生這種情況的兩者。
如若這項工作還是有辦法解決它?
感謝
正如我所說我取代begin_work語句自動提交=> 0,從來沒有使用過在一起,但是與所存儲的程序工作既不。我正在使用DBD :: mysql 4.019 – LAJ