mysql General error: 1205 Lock wait timeout exceeded; try restarting transaction

  1. 查看当前数据库的线程情况:

    SHOW FULL PROCESSLIST;

    

  2. 查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程

    SELECT * FROM information_schema.INNODB_TRX;

    

    trx_mysql_thread_id是否在1.(show full processlist)里面的sleep线程中

    如果在,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了,我们需要手动kill掉。

  3. kill掉被食物卡住的线程

    kill 44;

 注:此方法治标不治本,如果是事务未提交还是要找到没提交的逻辑,修改之,才能把问题根除!

 注:相关知识点

  1.导致mysql锁的原因:

    执行DML操作没有commit,再执行删除操作就会锁表。

    在同一事务内先后对同一条数据进行插入和更新操作。

    表索引设计不当,导致数据库出现死锁。

    阻塞DDL,继而阻塞所有同表的后续操作。

  2.查看mysql是否自动提交事务

    select @@autocommit 

  

转载于:https://www.cnblogs.com/yangyang23/p/9933852.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值