Thursday, November 1, 2007

Транзакции в mysql + pdo

Не работал PDO::rollBack();

Решение.

1. Таблица обязательно innoDb или DBD (мануал mysql)

После этого ничего не изменилось.

2. Перед транзакцией нужно set autocommit = 0; после set autocommit = 1 (mysql manual)
В итоге

<?php
/**
* @var PDO $db
*/
/


$db->exec('set autocommit=0');
try
{
    if ( 
false === $db->beginTransaction() )
    throw new 
Exception('bla bla bla ');
    
// do smth
    
$db->commit();
}
catch ( 
Exception $e)
{
    
$db->rollBack();
    
$logger->error$e->getMessage ) ;
}
$db->exec('set autocommit=1');
?>


0 comments:

 
Каталог сайтов, Добавить сайт