2012-02-29 3 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(); 
} 

Когда это действие контроллера выполняется, у меня есть ошибка 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, который не поддерживает транзакции

Смежные вопросы