Как убить транзакцию в MySql как root?
Я использую MySql 5.5.37. Как root, я пытаюсь убить транзакцию, которая блокирует некоторые таблицы. Я бегу!--4-->
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRXG
и получить выход
…
*************************** 6. row ***************************
trx_id: 143E6CDE
trx_state: RUNNING
trx_started: 2014-10-20 06:03:56
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 2305887
trx_mysql_thread_id: 158360
trx_query: delete from event where id not in (select q.* from (select e.id FROM event e, (select object_id, max(date_processed) d from event group by object_id) o where e.object_id = o.object_id and e.date_processed = o.d) q)
trx_operation_state: NULL
trx_tables_in_use: 3
trx_tables_locked: 3
trx_lock_structs: 210634
trx_lock_memory_bytes: 19790264
trx_rows_locked: 10668793
trx_rows_modified: 2095253
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
но когда я запускаю оператор "убить", я получаю ошибку.
mysql> kill 158360;
ERROR 1095 (HY000): You are not owner of thread 158360
Как очистить эту транзакцию от MySql?
2 ответов
вы всегда можете убить свой собственный поток, но вам нужна супер привилегия, чтобы убить чужой поток.
вы на RDS? Если это так, у вас нет супер привилегий, даже если ваше имя пользователя "root". Нет ничего неявно особенного в имени "root", это привилегия, которая имеет значение.
вы можете подтвердить свои права, запустив:
mysql> SHOW GRANTS;
Что касается того, как убить поток, если это RDS, вы можете вызвать процедуру rds_kill() в сделай это для себя.
просто для завершения ответа счета если вы используете RDS MySQL, вы можете использовать процедуру rds_kill (), как следующий пример:
подключение к MySQL
список процессов:
SHOW PROCESSLIST;
в моем случае я хочу убить процесс id 1948452:
CALL mysql.rds_kill(1948452);
сделал