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

ApsaraDB RDS:ApsaraDB RDS for MySQL における trx_mysql_thread_id = 0 の問題

最終更新日:Jun 23, 2026

問題の説明

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

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

information_schema.innodb_trx テーブルをクエリすると、trx_mysql_thread_id の値が 0 の未コミットのトランザクションが見つかります。

mysql> select * from information_schema.innodb_trx\G
*************************** 1. row ***************************
                    trx_id: 7617846
                 trx_state: RUNNING
               trx_started: 2024-11-26 14:25:05
      trx_requested_lock_id: NULL
          trx_wait_started: NULL
                trx_weight: 4
       trx_mysql_thread_id: 0
                 trx_query: NULL
       trx_operation_state: NULL
         trx_tables_in_use: 0
         trx_tables_locked: 1
          trx_lock_structs: 2
     trx_lock_memory_bytes: 1128
           trx_rows_locked: 2
         trx_rows_modified: 2
   trx_concurrency_tickets: 0
       trx_isolation_level: READ COMMITTED
         trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 0
          trx_is_read_only: 0
trx_autocommit_non_locking: 0
       trx_schedule_weight: NULL
1 row in set (0.04 sec)

原因

trx_mysql_thread_id の値が 0 の場合は、XA トランザクション (分散トランザクションの一種) を示します。この未コミットのトランザクションがロックを保持しているため、ロック待ちが発生します。

ソリューション

  1. XA RECOVER; を実行して、未コミットの XA トランザクションをリストします。

    mysql> xa recover;
    +----------+----------------+--------------+---------+
    | formatID | gtrid_length   | bqual_length | data    |
    +----------+----------------+--------------+---------+
    |      100 |              3 |            4 | 123_abc |
    +----------+----------------+--------------+---------+
    1 row in set (0.03 sec)
    説明

    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 公式ドキュメント」をご参照ください。