SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transactionSQLSTATE[HY000]:
redis-queue 消费代码如下
// 启动事务
Db::startTrans();
try {
$con[] = ['code', "=", $code];
$r1 = Db::name("code")->where($con)->save($getnewdata);
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
print $e->getMessage();
}
请问是问题3这个问题导致的吗 如何处理呢
你这个场景像是其他地方没有提交事务引起的,还有异常用Throwable,还有查看通过SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX查看事务的开始时间,然后去日志里查找同时间的sql语句 然后定位问题
方法比较笨,反正当时我被这问题差点搞死,目前一切正常
这个问题 本身这个sql所引起的,可能我理解有错,我系统只要出现这个问题,它会简介的致使系统大部分业务失效,经过分析很可能是sql线程的问题,这个sql线程挂掉后,之后所有在这个线程上的数据操作都会出现问题
检查一下图片上的库和表,里面能查到具体锁得哪一张表哪一条数据
再定位有关这张表的代码,你图片上的代码应该是没问题的,可能是其他位置代码造成的