Транзакция застряла в "ROLLING BACK" - процесс не существует - PullRequest
0 голосов
/ 30 мая 2019

У меня есть транзакция "ROLLING BACK", с trx_mysql_thread_id = 0

> mysql> SELECT * FROM information_schema.innodb_trx\G;
> *************************** 1. row ***************************
>                     trx_id: 4395673006
>                  trx_state: ROLLING BACK
>                trx_started: 2019-05-30 16:24:08
>      trx_requested_lock_id: NULL
>           trx_wait_started: NULL
>                 trx_weight: 26418873
>        trx_mysql_thread_id: 0
>                  trx_query: NULL
>        trx_operation_state: NULL
>          trx_tables_in_use: 0
>          trx_tables_locked: 0
>           trx_lock_structs: 11
>      trx_lock_memory_bytes: 1184
>            trx_rows_locked: 1
>          trx_rows_modified: 26418862    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 1 row in set (0.00 sec)
> 
> ERROR:  No query specified

А вот и вывод процессов:

mysql> show processlist;
+-----+------------+-------------------+------------+---------+------+-------+------------------+
| Id  | User       | Host              | db         | Command | Time | State | Info             |
+-----+------------+-------------------+------------+---------+------+-------+------------------+
|  15 | user2 | 127.0.0.1:53188 | user2 | Sleep   |    4 |       | NULL             |
|  16 | user3 | 127.0.0.10:34966 | user3 | Sleep   |    2 |       | NULL             |
|  17 | user3 | 127.0.0.10:34968 | user3 | Sleep   | 1221 |       | NULL             |
|  18 | user2 | 127.0.0.1:53194 | user2 | Sleep   | 1221 |       | NULL             |
|  21 | user2 | 127.0.0.1:53204 | user2 | Sleep   | 1220 |       | NULL             |
|  42 | user  | 127.0.0.8:45848  | user       | Sleep   |   15 |       | NULL             |
|  47 | user3 | 127.0.0.10:35494 | user3 | Sleep   | 1038 |       | NULL             |
|  48 | root  | localhost         | NULL       | Query   |    0 | init  | show processlist |
| 120 | user3 | 127.0.0.10:38156 | user3 | Sleep   |    1 |       | NULL             |
| 143 | user3 | 127.0.0.10:38430 | user3 | Sleep   |    5 |       | NULL             |
+-----+------------+-------------------+------------+---------+------+-------+------------------+
10 rows in set (0.00 sec)

Это после того, как я перезапустил сервер mysql. Транзакция имела идентификатор процесса, отличный от 0 ранее, но, похоже, он был создан еще раз, как только сервер перезапустился, с идентификатором = 0. Я склонен полагать, что это было вызвано отключением сети, и не было никакого реального отката (потому что нет никакого реального процесса). Есть ли способ, которым я могу эффективно убить эту транзакцию? Спасибо.

...