问题描述
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 RECOVER;后返回中显示乱码,可以执行- XA RECOVER CONVERT XID;。
- 查询到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官方文档。
该文章对您有帮助吗?