mysql出现锁表

2018-02-06 09:44:36来源:oschina作者:寻觅自我人点击

分享

今天测试人员在测试环境测试功能时,发现提交数据时,请求挂起,看了一下,估计是mysql锁表了。看了一下后台日志如下:


### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction ; SQL []; Lock wait timeout exceeded; try restarting transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction。


出现的原因应该是某个事务未提交导致的。


那么碰到这种情况该如何解决?


1.首先查看当前运行的事务


执行sql:select * from information_schema.innodb_trx;


会查出当前运行的事务;


另注:


-- 当前出现的锁 select * from information_schema.innodb_locks -- 锁等待的对应关系 select * from information_schema.innodb_lock_waits


字段解释:


trx_id 事务ID trx_state 事务状态: trx_started 事务开始时间; trx_requested_lock_idtrx_wait_started 事务开始等待的时间 trx_weighttrx_mysql_thread_id 事务线程ID trx_query 具体SQL语句 trx_operation_state 事务当前操作状态 trx_tables_in_use 事务中有多少个表被使用 trx_tables_locked 事务拥有多少个锁 trx_lock_structs trx_lock_memory_bytes 事务锁住的内存大小(B) trx_rows_locked 事务锁住的行数 trx_rows_modified 事务更改的行数 trx_concurrency_tickets 事务并发数 trx_isolation_level 事务隔离级别 trx_unique_checks 是否唯一性检查 trx_foreign_key_checks 是否外键检查 trx_last_foreign_key_error 最后的外键错误 trx_adaptive_hash_latchedtrx_adaptive_hash_timeout


2.清除对应的事务


找出对应的事务线程ID (trx_mysql_thread_id )


执行命令kill {trx_mysql_thread_id },即可。


不需要重启mysql服务

微信扫一扫

第七城市微信公众平台