2012-10-05 72 views
0

我使用hikashop(eshop組件)創建joomla(2.5)來自動導入客戶。問題是我正在使用不按預期工作的JDatabase事務(回滾不起作用)。方法processSingle處理每個客戶並返回它成功或不成功的天氣。另外爲了調試,還有一個參數可以知道哪個方法(步驟)失敗。我寫了另一個使用相同的回滾結構的腳本,它似乎工作,但這不是。我試圖捕獲DatabaseException,但沒有例外。有部分代碼無法回滾事務。Mysql轉換回滾失敗

foreach ($this->customerList as $customer) { 
     // start tracking database entries 
     $this->db->transactionStart(); 

     $oCustomer = new stdClass(); 
     $oCustomer->raw_data = $customer; 
     // escaping from sql injection 
     $oCustomer = $this->escapeObj($oCustomer); 
     // here we process all items taking one and going through all steps 
     $methodfailed = ""; 
     $success = $this->processSingle($oCustomer, $methodfailed); 
     $processed++; 
     if ($success) { 
      $succeeded++; 
      // if succeded save changes 
      $this->db->transactionCommit(); 
     } else { 
      $failed++; 
      echo $this->error . "<br/>"; 
      echo "failed method:" . $methodfailed . "<br/>"; 
      // if failed rollback database entries 
      $this->db->transactionRollback(); 
     } 
    } 

任何人都有類似的問題?順便說一句,我使用PHP/5.3.3-7。

回答

0

我不知道transactionStart做什麼,但只有InnoDB表支持事務。我敢打賭你的數據庫表是MyISAM。

+0

是表是MyISAM,對不起浪費時間。 – insanebits

+0

@ user1597483不是浪費時間;這是一個重要/合法的問題。 –