#查询当前数据库全部线程
show full processlist
#查询当前运行的全部事务
select * from information_schema.innodb_trx
#查询锁情况
select * from information_schema.innodb_locks
#查询锁等待情况
select * from information_schema.innodb_lock_waits
#查看mysql设置等待锁时长
show variables like "innodb_lock_wait_timeout%" #默认50s
show engine innodb status #查看当前的数据库请求,然后再判断当前事务中锁的情况
当update报错的时候
mysql Lock wait timeout exceeded; try restarting transaction

根据 select * from information_schema.innodb_trx查看当前运行的事务

然后发送update请求。
#查询当前运行的全部事务
select * from information_schema.innodb_trx

发现新的事物47062229等待锁、执行的sql,等待47059258释放锁。
#查询锁情况
select * from information_schema.innodb_locks

#查询锁等待情况
select * from information_schema.innodb_lock_waits

这里可以看到新事物等待某事物释放锁。
如何解决?
#查询当前运行的全部事务
select * from information_schema.innodb_trx
kill trx_mysql_thread_id 就可以了。