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