Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PDO не возвращает ошибок MySQL, в результате не отрабатывают транзакции 
:(
    Опции темы
HongKilDong
Дата 17.6.2010, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



У меня наблюдается странная ситуация - 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 

Чем тут можно делу помочь?
PM MAIL   Вверх
HongKilDong
Дата 17.6.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Помогло внимательное чтение мануала: http://www.php.net/manual/en/pdo.transactions.php smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0969 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.