すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ApsaraDB RDS for MySQL インスタンスで trx_mysql_thread_id の値が 0 のトランザクションがコミットされない場合の対処方法

最終更新日:Nov 09, 2025

問題の説明

ApsaraDB RDS for MySQL で次のエラーが報告されます。

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

information_schema.innodb_trx テーブルのクエリ結果は、trx_mysql_thread_id の値が 0 のトランザクションがコミットされていないことを示しています。

image

原因

trx_mysql_thread_id の値が 0 のトランザクションは XA トランザクションです。このエラーは、コミットされていない XA トランザクションによってロックが保持されているために発生します。

解決策

  1. XA RECOVER; 文を実行して、コミットされていない XA トランザクションをクエリします。

    image

    説明

    XA RECOVER; を実行した後の結果に文字化けが発生した場合は、XA RECOVER CONVERT XID; を実行できます。

  2. 要件に基づいて、コミットされていない XA トランザクションをロールバックまたはコミットします。

    • XA COMMIT 構文を使用して XA トランザクションをコミットできます。

      xa commit 'gtrid_length(data)','bqual_length(data)',formatID;

      例:

      xa commit '123','_abc',100;
    • XA ROLLBACK 構文を使用して XA トランザクションをロールバックできます。

      xa rollback 'gtrid_length(data)','bqual_length(data)',formatID;

      例:

      xa rollback '123','_abc',100;

XA トランザクションの構文の詳細については、「MySQL 公式ドキュメント」をご参照ください。