1、在数据库执行:
UPDATE play SET skip = skip+500, run = 5.50, jump_times=jump_times+1
WHERE id=388;
结果报错:
Error Code: 1205. Lock wait timeout exceeded; try restarting transaction
– 查看事物表
select * from information_schema.innodb_trx;
在结果中发现 trx_mysql_thread_id 有值 187772
show processlist;
结果中有一条187772的数据
在SQL中运行:
kill 187772;
Mysql update运行超时解决方案问题描述:执行update时,发现时间很长,而且会失败;步骤:1、在数据库执行:UPDATE play SET skip = skip+500, run = 5.50, jump_times=jump_times+1WHERE id=388;结果报错:Error Code: 1205. Lock wait timeout exce...
开发朋友求助,某条
update
语句已执行了十几小时,仍无法结束,语句如下:
UPDATE
CHECK_CRMHLR_HLR T
SET T.HLR_NET_TYPE_CODE =
(SELECT DECODE(A.NET_TYPE_CODE,
'10',
'XXX',
开发中那些事儿:为啥
update
会
超时
呢?
前一段时间,生产环境碰到一个异常,更新数据库的时候,提示锁等待
超时
(Lock wait timeout exceeded; try restarting transaction),
超时
时间是50秒,修改一条数据需要等待50秒+,我就有点纳闷了。异常如下:
第一时间没想太多,觉的是可能操作数据库太频繁了。代码中,一般的业务逻辑是,请求过来了,先数据入库,...
线上
mysql
的
update
语句获取锁
超时
情况分析以及复盘
多租户项目生产环境下,需要进行数据修复,执行一条
update
语句。在执行过程中一直报获取锁
超时
,无法执行
有其他事务,将需要修改的数据上锁,导致
update
获取锁
超时
。那么开始分析该租户是否有需要执行时间很长的事务。
发现另一个租户,正在异步的执行大方法,该方法有一个很大的事务。
初步分析结果:一个大的事务,将需要改的数据上了锁,一直没有释放,导致无法执行。
为什么我
update
一个租户的数据时,会去获取另一个租户的事务
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
解决办法:
查看sleep的进程
mysql
> show full processlist;
+-------+----------+-------------------+----------+---------+-------...
产生这个问题的原因是因为在
mysql
中产生了事务A,执行了修改的语句,比如:
update
t1 set aget=18 where id=1;此时事务并未进行提交,事务B开始
运行
,也同样需要修改id为1的用户的年龄:
update
t1 set aget=20 where id=1; 那么此时事务B会等待事务A结束释放写锁才能执行成功,否则则会等待一段时间,产生报错:
ERROR 1205 (
这个错误通常是由于
MySQL
服务器无法在规定的时间内响应客户端请求造成的。以下是一些可能的原因和解决方法:
1. 在网络连接不稳定的情况下,可能会导致连接
超时
。您可以尝试通过检查网络连接并确保它稳定来解决这个问题。
2.
MySQL
服务器可能会过载,导致响应时间变慢。您可以尝试通过在服务器上减少负载或升级硬件来解决这个问题。
3.
MySQL
服务器可能会出现故障或崩溃,导致无法响应客户端请求。您可以尝试重新启动
MySQL
服务器来解决这个问题。
4. 您的
MySQL
客户端可能已经
超时
并关闭了连接。您可以尝试通过增加客户端连接
超时
时间来解决这个问题。
5. 您的
MySQL
服务器可能已经被防火墙或其他安全软件阻止。您可以尝试检查您的防火墙配置和安全软件设置来解决这个问题。
如果您仍然无法解决这个问题,请尝试联系
MySQL
服务器管理员或技术支持人员以获取更多帮助。