Таблица сеансов MySQL Innodb: запрос на обновление не находит соответствия - PullRequest
1 голос
/ 13 февраля 2012

Мои сеансы PHP реализованы в базе данных MySQL с типом таблицы сеансов InnoDB.

Во время того же выполнения сценария PHP я отмечаю, что в таблицу сеансов была добавлена ​​новая строка, но я не могу выполнить инструкцию UPDATE. mysql_info () сообщает, что было 0 подходящих строк, поэтому он так и не нашел его! Но ручные проверки показывают, что строка существует в таблице.

Дело в том, что оператор UPDATE работает, если я запускаю его в следующем сценарии PHP.

Это также определенно связано с типом InnoDB, так как после переключения на MyISAM он работает нормально. Я новичок в типе таблиц InnoDB, есть ли что-то, что мне нужно знать при работе с таблицами InnoDB? блокировка на уровне строк?

[Редактировать: MySQL также не возвращает ошибок при выполнении оператора UPDATE]

[Изменить, пример SQL-запроса]

"UPDATE session SET user_id='" . mysql_real_escape_string($user_id) . "' WHERE session_id='" . mysql_real_escape_string(session_id()) . "'";

Любая помощь высоко ценится! Спасибо.

1 Ответ

0 голосов
/ 20 августа 2012

Может ли это быть проблемой синхронизации?

В качестве примера: Возьмите два сценария PHP, которые выполняются в быстрой последовательности (например, веб-сайт). Один из сценариев завершает и начинает запись данных сеанса, второй запускается до завершения записи данных сеанса и считывает «текущую» информацию сеанса из БД. С InnoDB второй скрипт получит старые данные сеанса.

Разве вы не любите асинхронные системы?

...