Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Правильная схема работы с транзакциями (dimkalinux)
Author Message
dimkalinux
Заглянувший



Joined: 11 Jul 2011
Posts: 4
Карма: 1
   поощрить/наказать


PostPosted: Wed Jul 27, 2011 12:05 pm (написано за 5 минут 15 секунд)
   Post subject: Правильная схема работы с транзакциями
Reply with quote

Добрый день.

Я пишу модуль БД для работы одного форума.
Текущая схема работы модля для InnoDB драйвера такая:

в начале страницы делается query('START TRANSACTION');
*** запросы к базе
в конце страницы query('COMMIT');
если в середине страницы происходит ошибка SQL-запроса делается ROLLBACK.

На этой схема произошла такая ошибка - в середине страницы при UPDATE таблицы произошел сбой PHP (не SQL) и транзакция зависла, не давая выполнить другие UPDATE запросы к этой таблицы. Помог только рестарт базы данных.

1) Как можно избежать такой ситуации в дальнейшем?
2) Может быть правильней вызывать 'START TRANSACTION' вручную только для определённых запросов, например, только перед INSERT UPDATE или вариант с автоматическим вызовом в начале страницы нормальный?
Back to top
View user's profile Send private message
Adonis
Заглянувший



Joined: 07 Jan 2012
Posts: 1
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Sat Jan 07, 2012 2:27 pm (спустя 5 месяцев 11 дней 2 часа 21 минуту; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

1. Используйте конструкции try ... catch, в catch будут попадать все исключительные ситуации, там делайте rollback
2. Автоматически не надо начинать транзакцию в начале страницы, начинайте только когда это действительно надо
Back to top
View user's profile Send private message
korolevases
Заглянувший



Joined: 19 Apr 2014
Posts: 4
Карма: 0
   поощрить/наказать


PostPosted: Sat Apr 19, 2014 3:44 pm (спустя 2 года 3 месяца 12 дней 1 час 16 минут; написано за 19 секунд)
   Post subject:
Reply with quote

спасибо за совет
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML