Простое обновление заявления время от времени - PullRequest
0 голосов
/ 21 октября 2018

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

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;

Обновление происходит для первичного ключа.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...