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线程挂掉后,之后所有在这个线程上的数据操作都会出现问题
你在哪个日志找到的当时时间执行的sql语句
你这场景也不适合事务啊,就一个操作,可以1.开启事务2.for循环更新3.最后提交事务