Я обновляю некоторые значения в строке таблицы с помощью простого оператора обновления, который работает в большинстве случаев.Однако время от времени он дает тайм-аут со следующей ошибкой -
Lock wait timeout exceeded; try restarting transaction
Метод обновления находится внутри хранимой процедуры, для которой тайм-аут установлен на 100 секунд.Я выполнил команду SHOW PROCESSLIST
в MySQL и обнаружил, что запрос на обновление выполняется бесконечно.Мне нужно было убить его вручную, чтобы другие вещи работали нормально.Я попытался установить проверку внешнего ключа на false перед вызовом обновления с этим оператором SET FOREIGN_KEY_CHECKS=0;
Оператор обновления -
UPDATE Campaign SET Status = 1, ModifiedOn = UTC_TimeStamp(), ModifiedBy = var_UserId, ProcessId = var_ProcessId where Id = var_CampaignId;
Обновление происходит для первичного ключа.
Я не вижу никакой логической проблемы в коде, потому что тот же оператор обновления может быть успешным после нескольких попыток.Как я могу избавиться от этой ошибки тайм-аута?Я уже две недели борюсь за эту проблему.