问题描述:
有一张表,表中有几行记录。 我想 修改 表中的 这个行记录,但是 怎么也修改不了。执行 更新语句,最后会报:
[2021-07-08 00:55:34] [40001][1205] Lock wait timeout exceeded; try restarting transaction
肯定是 这行记录 被 另一个 事务 锁住了,导致 无法 被新的 事务更新。因为 已经过了 两 天了 ,还是 更新不了,所以猜测 锁住 这行记录的 事务 无法 自行 结束。 需要 人工来 结束它。 但是 怎么找到 这个 事务 呢?
通过 这个 sql 可以查看当前 正在运行的 事务:
SELECT trx_id,trx_state,trx_started,trx_mysql_thread_id FROM INFORMATION_SCHEMA.INNODB_TRX
找到 trx_mysql_thread_id 对应的值,杀掉,然后再更新,就能更新了。
kill 16082644
last:
#常用的命令
#查看是否锁表
show OPEN TABLES where In_use > 0;
#查看 事务状态
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
#查看锁状态
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
#结束进程
kill 16082644