MySQL错误代码:1205。超过锁定等待超时;尝试在插入

时间:2017-08-04 16:50:09

标签: mysql database

我正在将一个数据插入到我的一个表中,并且我一直在锁定。

insert into inventory_files(id, pro_id) values(30,6569);

我收到以下错误。

Error Code: 1205. Lock wait timeout exceeded; try restarting transaction    51.004 sec

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; 

然后插入该数据。

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; 

插入其他表时没有问题。任何其他建议。
我也跑了。

SHOW ENGINE INNODB STATUS;

没有锁定的表格。

' InnoDB','','

2017-08-04 13:57:34 0x7f0c44461700 INNODB MONITOR OUTPUT 从过去29秒计算的每秒平均值

背景线

srv_master_thread循环:93 srv_active,0 srv_shutdown,2985 srv_idle

srv_master_thread日志刷新并写入:3076

SEMAPHORES

OS等待阵列信息:预订计数29

OS WAIT ARRAY INFO:信号计数29

RW-shared旋转0,轮次52,OS等待26

RW-excl旋转0,循环0,OS等待0

RW-sx旋转0,循环0,OS等待0

每次等待旋转:52.00 RW共享,0.00 RW-excl,0.00 RW-sx

TRANSACTIONS

Trx id counter 2147575956 \ n 清除为trx&n; n:o< 2147575378撤消n:o< 0状态:正在运行但空闲

历史列表长度91

每届会议的交易清单:

--- TRANSACTION 421165916588792,未开始

0 lock struct(s),堆大小1136,0行锁(

--- TRANSACTION 421165916587872,未开始

0 lock struct(s),堆大小1136,0行锁(

--- TRANSACTION 2147575922,ACTIVE 104秒

6个lock struct(s),堆大小1136,52行锁,undo log entries 5

MySQL thread id 32,OS thread handle 139690660574976,query id 43020 localhost 127.0.0.1 my_web_user

--- TRANSACTION 2147575860,ACTIVE 211 sec

6个lock struct(s),堆大小1136,52行锁,undo log entries 5 MySQL线程ID 30,OS线程句柄139690661377792,查询ID 40076 localhost 127.0.0.1 my_web_user

--- TRANSACTION 2147575771,ACTIVE 413秒 6个锁结构,堆大小1136,52行锁,撤消日志条目5 MySQL线程ID 23,OS线程句柄139690660976384,查询ID 35541 localhost 127.0.0.1 my_web_user

--- TRANSACTION 2147575640,ACTIVE 540秒 6个锁结构,堆大小1136,52行锁,撤消日志条目28 MySQL线程ID 16,OS线程句柄139690661177088,查询ID 29555 localhost 127.0.0.1 my_web_user

--- TRANSACTION 2147575372,ACTIVE 990 sec 6个锁结构,堆大小1136,52行锁,撤消日志条目28 MySQL线程ID 11,OS线程句柄139690661578496,查询ID 4137 localhost 127.0.0.1 my_web_user

Trx读取视图不会看到id为> = 2147575373的trx,看到< 2147575373 文件I / O. I / O线程0状态:等待完成的aio请求(插入缓冲线程) 我假设my_web_user正在锁定该行。你怎么解开这个行?

2 个答案:

答案 0 :(得分:2)

我遇到此错误的主要原因是现有进程正在运行,这会阻止在同一个表上执行新进程。

尝试

Show full processlist; kill x;

将x替换为您认为导致问题的流程编号

答案 1 :(得分:0)

显示完整的进程列表;杀死x;

在使用来自工作台的长查询时为我工作;