mysql错误: waiting for table metadata lock

今天突然发现truncate一个表都慢到不行,于是 SHOW PROCESSLIST

发现错误:waiting for table metadata lock
解决方法:查看information_schema.INNODB_TRX拥有事务的trx_mysql_thread_id,kill trx_mysql_thread_id回滚事务.

修改timeout默认值

mysql> show variables like 'innodb_lock_wait_timeout';

参数支持范围为Session和Global,且支持动态修改,所以可以通过两种方法修改;

2.1 通过语句修改

set innodb_lock_wait_timeout=100;

set global innodb_lock_wait_timeout=100;

注意global的修改对当前线程是不生效的,只有建立新的连接才生效

2.2 修改参数文件/etc/my.cnf

innodb_lock_wait_timeout = 50

三、当等待超过阀值时的情况

当锁等待超过设置时间的时候,就会报如下的错误;

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

 

posted on 2015-09-01 16:12  kenwong  阅读(967)  评论(0编辑  收藏  举报

导航