ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction解决
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、问题描述:同事反馈线上一个表有其中一条数据无法删除,其他都正常,我拿到删数据的sql,尝试执行,报错如下:mysql> delete from facebook_posts where id =
千家信息网最后更新 2026年11月01日ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction解决
一、问题描述:
同事反馈线上一个表有其中一条数据无法删除,其他都正常,我拿到删数据的sql,尝试执行,报错如下:
mysql> delete from facebook_posts where id = 7048962;ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
二、问题处理
从报错信息看,应该是关于这条数据有事物未提交,锁等待超时了,下面我们就开始验证并解决问题
1、在sql执行期间,通过information_schema.innodb_trx表找到这个sql的事物ID(5316933097 )
mysql> select trx_id,trx_started,trx_requested_lock_id,trx_mysql_thread_id,trx_query from information_schema.innodb_trx where trx_query='delete from facebook_posts where id = 7048962';+------------+---------------------+------------------------+---------------------+-----------------------------------------------+| trx_id | trx_started | trx_requested_lock_id | trx_mysql_thread_id | trx_query |+------------+---------------------+------------------------+---------------------+-----------------------------------------------+| 5316933097 | 2017-08-15 07:31:57 | 5316933097:923:24693:6 | 1798850878 | delete from facebook_posts where id = 7048962 |+------------+---------------------+------------------------+---------------------+-----------------------------------------------+1 row in set (0.00 sec)
关于innodb_trx表字段含义的解释:
mysql> desc information_schema.innodb_trx; +----------------------------+---------------------+------+-----+---------------------+-------+| Field | Type | Null | Key | Default | Extra |+----------------------------+---------------------+------+-----+---------------------+-------+| trx_id | varchar(18) | NO | | | |#事务ID| trx_state | varchar(13) | NO | | | |#事物状态| trx_started | datetime | NO | | 0000-00-00 00:00:00 | |#事物开始时间| trx_requested_lock_id | varchar(81) | YES | | NULL | |#事物请求锁ID| trx_wait_started | datetime | YES | | NULL | |#事物开始等待时间| trx_weight | bigint(21) unsigned | NO | | 0 | |#| trx_mysql_thread_id | bigint(21) unsigned | NO | | 0 | |#事物线程ID,即show processlist看到ID| trx_query | varchar(1024) | YES | | NULL | |#具体SQL| trx_operation_state | varchar(64) | YES | | NULL | |#事物当前操作状态| trx_tables_in_use | bigint(21) unsigned | NO | | 0 | |#事物中有多少个表被使用| trx_tables_locked | bigint(21) unsigned | NO | | 0 | |#使用拥有多少个锁| trx_lock_structs | bigint(21) unsigned | NO | | 0 | |#| trx_lock_memory_bytes | bigint(21) unsigned | NO | | 0 | |#事物锁住的内存大小| trx_rows_locked | bigint(21) unsigned | NO | | 0 | |#事物锁住的行数| trx_rows_modified | bigint(21) unsigned | NO | | 0 | |#使用修改的行数| trx_concurrency_tickets | bigint(21) unsigned | NO | | 0 | |#事物并发票数| trx_isolation_level | varchar(16) | NO | | | |#事物隔离级别| trx_unique_checks | int(1) | NO | | 0 | |#是否唯一性检查| trx_foreign_key_checks | int(1) | NO | | 0 | |#是否外键检查| trx_last_foreign_key_error | varchar(256) | YES | | NULL | |#最后的外键错误| trx_adaptive_hash_latched | int(1) | NO | | 0 | |#| trx_adaptive_hash_timeout | bigint(21) unsigned | NO | | 0 | |#| trx_is_read_only | int(1) | NO | | 0 | |#| trx_autocommit_non_locking | int(1) | NO | | 0 | |#+----------------------------+---------------------+------+-----+---------------------+-------+24 rows in set (0.00 sec)
2、通过上面步骤1找到的事物ID,找到占有锁的事物ID(5316888834 )
mysql> select * from information_schema.innodb_lock_waits where requesting_trx_id=5316933097;+-------------------+------------------------+-----------------+------------------------+| requesting_trx_id | requested_lock_id | blocking_trx_id | blocking_lock_id |+-------------------+------------------------+-----------------+------------------------+| 5316933097 | 5316933097:923:24693:6 | 5316888834 | 5316888834:923:24693:6 |+-------------------+------------------------+-----------------+------------------------+1 row in set (0.00 sec)
关于innodb_lock_waits 表的字段含义的解释:
mysql> desc information_schema.innodb_lock_waits;+-------------------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------------------+-------------+------+-----+---------+-------+| requesting_trx_id | varchar(18) | NO | | | |#请求锁的事物ID| requested_lock_id | varchar(81) | NO | | | |#请求锁的锁ID| blocking_trx_id | varchar(18) | NO | | | |#当前拥有锁的事物ID| blocking_lock_id | varchar(81) | NO | | | |#当前拥有锁的锁ID+-------------------+-------------+------+-----+---------+-------+4 rows in set (0.00 sec)
3、通过步骤2找到的占有锁的事物ID,找到占有锁的事物线程ID(1790259884 )
mysql> select * from information_schema.innodb_trx where trx_id=5316888834 \G*************************** 1. row *************************** trx_id: 5316888834 trx_state: RUNNING trx_started: 2017-08-15 06:00:21 trx_requested_lock_id: NULL trx_wait_started: NULL trx_weight: 6 trx_mysql_thread_id: 1790259884 trx_query: NULL trx_operation_state: NULL trx_tables_in_use: 0 trx_tables_locked: 0 trx_lock_structs: 6 trx_lock_memory_bytes: 1184 trx_rows_locked: 10 trx_rows_modified: 0 trx_concurrency_tickets: 0 trx_isolation_level: REPEATABLE READ trx_unique_checks: 1 trx_foreign_key_checks: 1trx_last_foreign_key_error: NULL trx_adaptive_hash_latched: 0 trx_adaptive_hash_timeout: 10000 trx_is_read_only: 0trx_autocommit_non_locking: 01 row in set (0.00 sec)
4、通过步骤3找的事物ID,可以查看下这个事物发起的账号和主机信息,提供给开发人员查找异常的真正原因,并kill这个事物ID,这条数据就可以正常删除了
#查看下这个事物发起的账号和主机信息mysql> select * from information_schema.processlist where ID=1790259884;+------------+----------+---------------------+--------+---------+------+-------+------+| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |+------------+----------+---------------------+--------+---------+------+-------+------+| 1790259884 | spider_w | 172.31.11.143:46120 | db_mta | Sleep | 1319 | | NULL |+------------+----------+---------------------+--------+---------+------+-------+------+1 row in set (0.01 sec)#kill 这个未提交的事物线程IDmysql> CALL mysql.rds_kill(1790259884);Query OK, 0 rows affected (0.00 sec)#删除数据mysql> delete from facebook_posts where id = 7041232;Query OK, 1 row affected (0.02 sec)
事物
数据
信息
步骤
线程
问题
主机
含义
字段
时间
状态
账号
检查
解释
事务
人员
内存
原因
同事
唯一性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
科技创新与互联网经济
互联网通讯科技
互联网科技未来
互联网科技公司官网
壕鑫互联网络科技
互联网高科技企业
深圳艾佳互联网科技
互联网科技生活的内容
北京华百购互联网科技有限公司
赶超互联网科技 微信多开
互联网科技与大数据专业
洛阳昕诺飞互联网科技有限公司
深圳育鹏互联网科技有限公司招聘
国大互联网教育科技有限公司工作
电子商务与互联网科技的关系
城市宝互联网科技有限公司
抖集互联网科技技术咨询
互联网科技机房
青岛易易互联网科技
互联网科技公司华为
万易互联网科技有限公司
互联网科技中介
互联网科技产业特征
恒生互联网科技指数跳水
长沙茂晟互联网科技有限公司
科技大学互联网
无锡工业互联网科技有限公司
互联网方面的科技前沿
知域互联网科技有限公司官网