У меня есть таблица t, которая содержит два столбца: name VARCHAR(20) NOT NULL, surname VARCHAR(20) NOT NULL
Я установил блокировку чтения в первой сессии с помощью следующего кода:
LOCK TABLE t READ;
Я попробовал записать данные вот так:
INSERT INTO t(name, surname) VALUES('Stan', 'Collins');
И сгенерировалась ошибка, в которой сказано, что таблица t
была заблочена с помощью READ лока и не может быть обновлена. Все ок, так и должно быть.
Я перезашел в MySQL и попытался ввести данные в таблицу во второй раз, набрав код и по какой-то причине он заработал. Как я узнал из этой статьи https://www.mysqltutorial.org/mysql-table-locking/ когда READ лок установлен, сессия которая активировала его и остальные сессии могут читать, но не могут записывать данные в таблицу.
Так почему же данные были записаны в таблицу во второй сессии, несмотря на то, что я установил READ лок в первой сессии?
Из-за пере захода в MySQL READ LOCK был сброшен. Поэтому во второй сессии данные записываются в таблицу. Если же не выходить из MySQL, а запустить вторую сессию параллельно с первой, то данные не запиутся, MySQL перейдет в режим ожидания и будет находиться в нём пока не будет сброшен READ LOCK в первой сессии. Будь то явный сброс (через команду UNLOCK TABLES) или завершение сессии.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть таблица с квартирами и у каждой квартиры есть удобстваУдобства разные и разное количество их
Суть проблемы: есть скрипт огромный, написанный мною, но использующий множество функционала из фремворка CMS(prestashop)Сам по себе процесс работы...
Надо спарситьonion сайт, но используя curl и другие похожие посты ничего не выходит
Есть текстовое поле с именем nicknameИз него значение передается в базу данных