问题描述
RDS MySQL出现如下报错:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
查询information_schema.innodb_trx
表发现trx_mysql_thread_id
为0的事务未提交。
问题原因
trx_mysql_thread_id
为0表示存在XA(分布式)事务,XA事务未提交导致了锁阻塞。
解决方案
使用
xa recover;
命令查询当前未提交的XA事务。查询到XA事务后,您可以根据业务需求选择回滚或者提交这些事务。命令如下:
提交(commit)XA事务:
xa commit 'gtrid_length(data)','bqual_length(data)',formatID;
以上图为例,具体命令如下:
xa commit '123','_abc',100;
回滚(rollback)XA事务:
xa rollback 'gtrid_length(data)','bqual_length(data)',formatID;
以上图为例,具体命令如下:
xa rollback '123','_abc',100;
更多XA事务语法,请参见MySQL官方文档。
文档内容是否对您有帮助?