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