MySql 5.6 排查DeadLock
查看日志发现出现
2022-06-18 23:09:08.590 [https-jsse-nio-443-exec-126] INFO c.t.t.provider.controller.OrderMasterController - e->
### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
### The error may involve com.ty.topingr.provider.dao.OrderMasterDao.updateOrderStatus-Inline
### The error occurred while setting parameters
### SQL: update ty_order_master SET pay_time = ?, order_status = ?, third_party_pay_id = ? where out_trade_no = ?
以前未处理过这种问题,开始利用搜索引擎
show engine innodb status
查询最近一次的死锁信息(相关的日志内容解释挺多的,基本了解一下就明白是哪两条sql发生了死锁)
- 但是不适用,因为时间已经过去了1天才发现问题。
- 查看历史所有的死锁日志
show variables like 'innodb_print_all_deadlocks';
检查是否开启记录(默认是关闭的,看了眼果然是关闭的,那只能先打开方便以后排查问题了)- 修改my.ini
innodb_print_all_deadlocks=on
记得重启数据库 show variables like 'log_error';
查看mysql错误日志存放路径