У меня есть код, который использовался в приложении, где у меня проблема с откатом. Даже если я '2 'возвращает ложный откат, не происходит, т. Е. Таблицы «продукты» теряются. Может ли кто-нибудь объяснить, почему он не работает или как его изменить. Примечание: Таблицы имеют Innodb engine..I использование MySQL 5.0+Ошибка MySQL Transaction + PHP в Mysql
mysql_query('SET AUTOCOMMIT=0;');
mysql_query('START TRANSACTION;');
$sql = 'DROP TABLE '.$this->Product->tablePrefix.'products';
$s1 = mysql_query($sql);
$sql = 'RENAME TABLE '.$this->Product->tablePrefix.'temp12212 TO '.$this->Product->tablePrefix.'products';
$s2 =mysql_query($sql);
if($s1 && $s2){
mysql_query('COMMIT;');
$this->Session->setFlash('Commit Successful to Database');
}else{
mysql_query('ROLLBACK;');
$this->Session->setFlash('Commit failed due to some errors<br> auto-rollbacked to previous state');
}
rename также является братом-братом !!! :-(.. rename также выдает неявное сообщение. – Libu
Я знаю, используйте 'RENAME', чтобы переименовать обе таблицы автоматически, а не транзакцию. –
Работал :-) Спасибо за ответ !!! «RENAME» не может использоваться внутри «START TRANSACTION» и «COMMIT», но его можно использовать вместо него из-за его свойства атомарности ... – Libu