2012-02-29 9 views
2

このコントローラのアクションを実行すると、私は取引Zend Frameworkの取引(Zend_Db_Adapterの)

$backendB = new BackendBanner();//BackendBanner and ImageBanner extends Zend_Db_Table_Abstract 
$backendB->getAdapter()->beginTransaction(); // starting transaction 

try { 
     $backendB->getAdapter()->insert('module_adv_banner',$data); 
     $lastID = $backendB->getAdapter()->lastInsertId(); 
     $imageBanner = new ImageBanner(); 
     $imageBanner->getAdapter()->insert('module_adv_filebanner',$imgdata); 
     $imageBanner->getAdapter()->commit(); 
} catch (Exception $e) { 
     $backendB->getAdapter()->rollBack(); 
     echo $e->getMessage(); 
} 

との問題を抱えているが、私は2番目の挿入作業におけるSQLエラーがあります。

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id_banner1' in 'field list' 

しかし、ロールバックが機能していません最初に挿入されたクエリは正常に実行され、行はテーブルに挿入されます。

どうすればいいですか?

+1

使用しているデータベースはどれですか。それがmysqlの場合、あなたのテーブルにはどのようなストレージエンジンが使われますか? – zerkms

+0

テーブルエンジンはMyISAMであり、トランザクションでは機能しません。 InnoDBに変更され、すべては問題ありません。 – Ahmed

+0

入力中に 'id_banner1'が本当に存在するか、モデルに定義されているかどうかチェックしましたか? – Starx

答えて

6

問題は、トランザクションをサポートしていないMyISAMを使用することです。