Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > PDO не возвращает ошибок MySQL


Автор: HongKilDong 17.6.2010, 15:13
У меня наблюдается странная ситуация - PDO не реагирует на ошибки MySQL - соответственно пропадает возможность обеспечивать целлостность изменений с помощью транзакций.

К примеру следующий код:

Код

try {
  
  $db = new PDO("...my DSN...");
  $db->beginTransaction();
  
  $ins1 = $db->exec("INSERT INTO test (test1, test2) VALUES (1, 1)");
  $ins2 = $db->exec("INSERT INTO test (test1, test2) VALUES (1, 'incorrect value')");
  $db->commit();

}
catch(PDOException $e)
{
  $db->rollBack();
  echo 'Error:'.$e->getMessage();
}

echo ">>$ins1 and $ins2<<";


генерит следующие запросы к базе:
Код

100617 14:40:25          1 Connect     root@localhost on test_db
              1 Query       START TRANSACTION
              1 Query       INSERT INTO tst (tst1, tst2) VALUES (1, 0)
              1 Query       INSERT INTO tst (tst1, tst2) VALUES (0, 'incorrect value')
              1 Query       COMMIT
              1 Quit       

и такой вывод:
Код

>>1 and <<


хотя второй инсерт заведомо ошибочный и долже приводить к генерации PDO исключения и последующему rollback.

В результате в базе остаётся результат только первого запроса, соответственно не обеспечиваыется целостность изменений под транзакцией.  smile 

Чем тут можно делу помочь?

Автор: HongKilDong 17.6.2010, 15:42
Помогло внимательное чтение мануала: http://www.php.net/manual/en/pdo.transactions.php smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)