Назад | Перейти на главную страницу

Зависла транзакция mysql - сохраняется после перезапуска сервера

select * from INFORMATION_SCHEMA.INNODB_TRX\G;
*************************** 1. row ***************************
                    trx_id: 41844623
                 trx_state: RUNNING
               trx_started: 2016-11-23 15:40:42
     trx_requested_lock_id: NULL
          trx_wait_started: NULL
                trx_weight: 71
       trx_mysql_thread_id: 0
                 trx_query: NULL
       trx_operation_state: NULL
         trx_tables_in_use: 0
         trx_tables_locked: 6
          trx_lock_structs: 7
     trx_lock_memory_bytes: 1136
           trx_rows_locked: 1
         trx_rows_modified: 64
   trx_concurrency_tickets: 0
       trx_isolation_level: REPEATABLE READ
         trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 10000
          trx_is_read_only: 0
trx_autocommit_non_locking: 0

Есть ли способ убить транзакцию MySQL с помощью trx_id? Или как-нибудь его очистить? С этой транзакцией не связан идентификатор потока MySQL или идентификатор запроса, и он сохраняется после перезапуска сервера.

Пытаться это исправление. Использование:

mysql> xa recover convert xid;

затем зафиксируйте их, используя:

mysql> xa commit 0x01020304627175616C;

Это распределенная транзакция. Он ждет фиксации или отката.

http://dev.mysql.com/doc/refman/5.7/en/xa-statements.html

Чтобы просмотреть ожидающие распределенные транзакции, войдите в командную строку MySQL и введите:

XA RECOVER;

Чтобы откатить транзакцию, возьмите данные, найденные в столбце данных, из выходных данных XA Recover. Итак, если в столбце данных указано «X12345»:

XA ROLLBACK 'X12345'