我正在用简单的update语句更新表行中的某些值,该语句在大多数情况下运行良好。但是,间歇性地会超时并显示以下错误-
Lock wait timeout exceeded; try restarting transaction
更新方法位于存储过程中,该存储过程的超时设置为100秒。我在MySQL中运行了SHOW PROCESSLIST
命令,发现更新查询无限期地运行。我需要手动将其杀死,以便其他功能正常运行。我曾尝试使用此语句SET FOREIGN_KEY_CHECKS=0;
Update语句为-
UPDATE Campaign SET Status = 1, ModifiedOn = UTC_TimeStamp(), ModifiedBy = var_UserId, ProcessId = var_ProcessId where Id = var_CampaignId;
更新是针对主键进行的。
我在代码中看不到任何逻辑问题,因为经过几次尝试,相同的更新语句可能会成功。如何摆脱这个超时错误?从现在起的两个星期,我一直在为此问题苦苦挣扎。