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

标签 mysql

我正在向我的一个表中插入数据,但我一直在获取锁。

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-excl 自旋 0,轮 0,操作系统等待 0

RW-sx 自旋 0,轮 0,操作系统等待 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

每个 session 的交易列表:

---TRANSACTION 421165916588792,未开始

0 个锁结构,堆大小 1136,0 个行锁

---TRANSACTION 421165916587872,未开始

0 个锁结构,堆大小 1136,0 个行锁

---交易 2147575922,活跃 104 秒

6 个锁结构,堆大小 1136,52 个行锁,撤消日志条目 5

MySQL 线程 id 32,OS 线程句柄 139690660574976,查询 id 43020 localhost 127.0.0.1 my_web_user

---交易 2147575860,活跃 211 秒

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

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

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

---交易 2147575372,活跃 990 秒 6 个锁结构,堆大小 1136,52 个行锁,撤消日志条目 28 MySQL 线程 id 11,OS 线程句柄 139690661578496,查询 id 4137 localhost 127.0.0.1 my_web_user

Trx 读取 View 不会看到 id >= 2147575373 的 trx,看到 < 2147575373 文件输入输出 I/O线程0状态:WAITING完成的aio请求(插入缓冲线程) 我假设 my_web_user 正在锁定该行。如何解锁该行?

最佳答案

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

尝试

Show full processlist; kill x;

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

关于MySQL 错误代码 : 1205. 超过锁定等待超时;尝试在插入时重新启动事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45511925/

相关文章:

mysql - 使用多对多表 MySQL 进行过滤

mysql - 如何减少SQL数据库中的自增数?

mysql - 查询 phpMyAdmin 以仅显示具有特定值的行

mysql - 带有 express-session 和 express-mysql-session 的 NodeJS 没有设置 session 。我哪里搞砸了?

mysql - mysql 查询 : couple of conditions matching in the same column

mysql - MySQL在mpdf中每行创建一个新的页面宽度

php - 在一个数组中从 mysql 检索多个结果

php - 在自定义查询php中匹配用户密码

php - 注意代码中没有数组的 : Array to string conversion.

mysql - 我无法让 JPA CriteriaBuilder equal() 谓词区分大小写