我正在将数据插入到我的一个表中,并且一直得到锁定。
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 监视器输出 从过去 29 秒开始计算的每秒平均值
后台线程
srv_master_thread 个循环:93 srv_active、0 srv_shutdown、2985 srv_idle
srv_master_thread日志刷新和写入:3076
信号灯
操作系统等待阵列信息:预留计数 29
操作系统等待阵列信息:信号计数 29
RW 共享旋转 0,回合 52,操作系统等待 26
RW 不包括旋转 0,舍入 0,操作系统等待 0
RW-sx 旋转 0,轮次 0,操作系统等待 0
每次等待的旋转回合数:52.00 RW 共享、0.00 RW 不包括、0.00 RW-sx
交易
Trx ID 计数器 2147575956 清除 trx 的 n:o <2147575378撤消 n:o <0 状态:正在运行但空闲
历史列表长度 91
每个会话的交易列表:
---事务421165916588792,未启动
0 个锁结构, 堆大小 1136, 0 行锁
---事务421165916587872,未启动
0 个锁结构, 堆大小 1136, 0 行锁
---事务2147575922,活动 104 秒
6 个锁结构,堆大小 1136,52 行锁,撤消日志条目 5
MySQL 线程 ID 32、OS 线程句柄 139690660574976、查询 ID 43020 本地主机 127.0.0.1 my_web_user
---事务2147575860,活动 211 秒
6 个锁结构,堆大小 1136,52 行锁,撤消日志条目 5 MySQL 线程 ID 30,OS 线程句柄 139690661377792,查询 ID 40076 本地主机 127.0.0.1 my_web_user
---事务2147575771,活动 413 秒 6 个锁结构,堆大小 1136,52 行锁,撤消日志条目 5 MySQL 线程 ID 23,OS 线程句柄 139690660976384,查询 ID 35541 本地主机 127.0.0.1 my_web_user
---事务2147575640,活动 540 秒 6 个锁结构,堆大小 1136,52 行锁,撤消日志条目 28 MySQL 线程 ID 16,OS 线程句柄 139690661177088,查询 ID 29555 本地主机 127.0.0.1 my_web_user
---事务2147575372,活动 990 秒 6 个锁结构,堆大小 1136,52 行锁,撤消日志条目 28 MySQL 线程 ID 11、OS 线程句柄 139690661578496、查询 ID 4137 本地主机 127.0.0.1 my_web_user
trx 读取视图将看不到 id 为>= 2147575373 的 trx,请参阅<2147575373 文件 I/O I/O 线程 0 状态:等待已完成的 AIO 请求(插入缓冲区线程( 我假设my_web_user正在锁定该行。 你如何解锁行?
我遇到此错误的主要原因是当现有进程正在运行时,这会阻止在同一表上执行新进程。
尝试
Show full processlist; kill x;
将 X 替换为您认为导致问题的进程编号
显示完整的进程列表; 杀死 x;
在工作台使用长查询时为我工作;