MySQL 错误代码:1205。超过锁等待超时;尝试在插入时重新启动事务

use*_*290 4 mysql

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

insert into inventory_files(id, pro_id) values(30,6569);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

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

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; 
Run Code Online (Sandbox Code Playgroud)

然后插入该数据。

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; 
Run Code Online (Sandbox Code Playgroud)

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

SHOW ENGINE INNODB STATUS;
Run Code Online (Sandbox Code Playgroud)

没有桌子被锁。

'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-excl 自旋 0、轮数 0、OS 等待 0

RW-sx 自旋 0,轮数 0,OS 等待 0

每次等待的旋转轮数:52.00 RW-shared、0.00 RW-excl、0.00 RW-sx

交易

Trx id 计数器 2147575956\n 已完成 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,操作系统线程句柄139690660574976,查询id 43020 localhost 127.0.0.1 my_web_user

---交易 2147575860,活跃 211 秒

6 个锁结构,堆大小 1136,52 个行锁,撤消日志条目 5 个 MySQL 线程 ID 30,操作系统线程句柄 139690661377792,查询 ID 40076 localhost 127.0.0.1 my_web_user

---事务 2147575771,活动 413 秒 6 锁结构,堆大小 1136,52 行锁,撤消日志条目 5 MySQL 线程 ID 23,操作系统线程句柄 139690660976384,查询 ID 35541 localhost 127.0.0.1 my_web_user

---事务 2147575640,活动 540 秒 6 锁结构,堆大小 1136,52 行锁,撤消日志条目 28 MySQL 线程 ID 16,操作系统线程句柄 139690661177088,查询 ID 29555 localhost 127.0.0.1 my_web_user

---事务 2147575372,活动 990 秒 6 锁结构,堆大小 1136,52 行锁,撤消日志条目 28 MySQL 线程 ID 11,操作系统线程句柄 139690661578496,查询 ID 4137 localhost 127.0.0.1 my_web_user

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

小智 5

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

尝试

Show full processlist; kill x;
Run Code Online (Sandbox Code Playgroud)

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