解决死锁问题General error: 1205 Lock wait timeout exceeded; try restarting transaction

问题原因:
执行DML操作没有commit,再执行删除操作就会锁表。
在同一事务内先后对同一条数据进行插入和更新操作。
表索引设计不当,导致数据库出现死锁。
阻塞DDL,继而阻塞所有同表的后续操作。
解决办法:

//登入mysql
mysql -u账号 -p密码
//查找死锁线程id
SELECT * FROM information_schema.INNODB_TRX;
//杀死线程
kill 9604

在这里插入图片描述
重现问题方法:

//开启事务
BEGIN;
//排它锁,执行更新某条数据(执行完就会产生上面问题,不能进行增删改查操作)
SELECT * from users where id=24845 FOR UPDATE;
//提交事务(测试提交,问题消失)
COMMIT;

在这里插入图片描述

温馨提示:执行上面相关命令,需要root权限

猜你喜欢

转载自blog.csdn.net/cxhblog/article/details/109582201
今日推荐