Задавайте вопросы, мы ответим
Вы не зашли.
Логи запросов включены.
Если верить логам - запрос вида UPDATE .. SET Status='D' WHERE ... выполнялся, но по факту значение Status не изменилось.
Сам запрос рабочий (копировал его и через майадмин выполнял - все замечательно выполняется)
ПО тем же логам после запроса других действий (кроме селекта и 2-го (ручного апдейта)) не производилось.
Ручных (т.е. программных) локов этой таблицы не производилось.
Подскажите плз куда копать + где почитать про автолок при разных операциях (если такой имеет место быть) - insert+update,select+update и т.д.
зы: innodb
Отредактированно YAAP (06.01.2012 14:08:19)
Неактивен
А лог чей? Сервера MySQL или какой-то другой программы?
Неактивен
LazY написал:
А лог чей? Сервера MySQL или какой-то другой программы?
mysql-ный
Был бы скриптовый - включал бы базюшный лог и смотрел, есть ли запрос там.
А так - мускуль сам в логи записал запрос, но по факту он не выполнился.
Проверил еще раз - ситуация повторилась.
UPD:
Проверил еще раз
show open tables WHERE In_use > 0
На протяжении работы скрипта обновляемя таблица висела в списке с In_use = 1
Скрипт лок таблицы не использует, куда смотреть?
UPD2:
С другой стороны InnoDB tables use row-level locking, т.е. если руками не лочить всю таблицу - проблем с этим быть не должно.
Как можно отследить, заблокирована ли строка перед выполнением запроса (или в каких случаях на строку может наложиться блокировка и не сняться потом) ?
Отредактированно YAAP (06.01.2012 15:08:40)
Неактивен
Все тему закрываем, ошибку нашел, с mysql не связана, связана с руками
Неактивен