SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.10.2013 14:08:06

zenovy
Участник
Зарегистрирован: 25.10.2013
Сообщений: 1

Изменение данных таблицы из разных процессов

Приветствую, собственно имеется следующий вопрос:
Есть таблица, например:


create table info_data (
  item_id int unsigned not null,
  item_param mediumint unsigned
)
ENGINE = INNODB
 

процесс работы с этой таблицей, в результате которого появился данный вопрос, выглядит следующим образом:
- на сервере S1 некий php-скрипт S1-А при своём запуске, создаёт PDO-подключение к БД
- скрипт S1-А обращается на удалённый сервер S2, и дёргает (то есть, просто вызывает по HTTP) другой скрипт S2-A на этом удалённом сервере, в блокирующем режиме, то есть, скрипт S1-А не получит управление до тех пор, пока не получит ответ от скрипта S2-A
- скрипт S2-A в свою очередь, выполняет некие действия, и так же вызывает (по HTTP) другой скрипт S1-B на первом сервере S1
- скрипт S1-B меняет значение столбца item_param в вышеприведённой таблице, и заканчивает свою работу
- скрипт S2-A получает ответ от S1-B и заканчивает свою работу
- S1-A получает ответ от S2-A и смотрит значение поля item_param.

Собственно, проблема в том, что значение этого поля не изменилось для скрипта S1-A, когда же в самой БД, это поле меняется.

Все скрипты которые пишут в базу используют транзакции с явным коммитом.

В общем, подскажите, из-за чего происходит подобная проблема.

Отредактированно zenovy (25.10.2013 14:09:41)

Неактивен

 

#2 25.10.2013 15:04:45

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Изменение данных таблицы из разных процессов

Какой уровень изоляции? Если в скрипте S1-A транзакция начата до запуска скрипта S1-B, то при определенных условиях он будет видеть версию на начало транзакции. Попробуйте начать транзакцию явно с помощью BEGIN перед последним шагом

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson