1.当前运行的所有事务
mysql> SELECT * FROM information_schema.INNODB_TRX;
2.当前出现的锁
mysql> SELECT * FROM information_schema.INNODB_LOCKs;
3.锁等待的对应关系
mysql> SELECT * FROM information_schema.INNODB_LOCK_waits;
4.杀掉进程
kill 8765;
5.杀不掉进程的时候,使用show PROCESSLIST,将占用锁的进程杀掉
6.数据库配置文件修改:
原因:原因是你使用的InnoDB 表类型的时候,
默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,
因为有的锁等待超过了这个时间,所以抱错.
你可以把这个时间加长,或者优化存储过程,事务避免过长时间的等待.
解决的办法 :
将mysql的配置文件的innodb_lock_wait_timeout 锁定等待时间改大,由50秒改为500秒,mysql的配置文件一般在/etc/my.cnf
my.ini文件:
#innodb_lock_wait_timeout = 50
修改为
innodb_lock_wait_timeout = 500
本文详细介绍了如何查看MySQL中InnoDB表类型的事务、锁及锁等待情况,包括使用SQL语句查询运行中的事务、当前锁状态和锁等待关系。同时,针对因innodb_lock_wait_timeout参数设置不当导致的锁等待超时错误,提供了修改配置文件my.cnf或my.ini中该参数的方法,以延长锁等待时间或优化存储过程,避免长时间事务等待。
1664

被折叠的 条评论
为什么被折叠?



