Таблицы блокировки MySQL - PullRequest
2 голосов
/ 18 марта 2012

Я пытаюсь сделать простую блокировку, которая предотвращает любые другие запросы от чтения или записи одной таблицы. Результаты моего кода после ввода и выполнения в phpmyadmin:

LOCK TABLES mytable WRITE;# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO mytable (field1, field2) VALUES ('21',  '123123');# 1 row(s) affected.

Блокировка не работает, и вставка работает. Ясно, что не работает правильно ... что я делаю не так? Я поливал документы по MySQL, и это похоже на то, что они говорят делать ...

1 Ответ

6 голосов
/ 18 марта 2012

Существуют блокировки для предотвращения доступа ДРУГИХ сеансов к таблице во время работы ВАШЕГО сеанса на столе. Не было бы никакого смысла в блокировках, если бы блокировка таблицы блокировала и ваш собственный код.

Вы должны проверить это с двумя соединениями. Одно соединение блокирует, другое пытается выполнить вставку.

Выполнение всего этого в phpmyadmin делает это через ОДНО одно соединение и не является допустимым тестом.

...