事务回滚无效,查看 MySQL general_log,发现压根没有事务语句的影子,怎么办?

DB::beginTransaction();
try {
    操作1;
    操作2;
    DB::commit();
} catch {
    DB::rollBack();
}

用的是这种形式,故意让操作2抛出异常(insert的时候字段不对),发现操作1的记录依然入库了,并没有回滚掉。
开启mysql的general_log,发现只有操作1的语句,并没有诸如‘set auto commit = 0’,‘ roll back’之类的记录,甚至连产生了报错的操作2的insert语句都没看到(我不知道这个是否应该有,可能是无关条件)
故意手动在操作1与操作2之前抛出异常触发roolback也同样无效。
PS:在DB::rollBack();前后插入了Log语句,确认rollback方法是执行了的。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

自己破案了
https://blog.csdn.net/mathphp/article/deta...
搞了半天是因为用了双数据库链接的原因
多亏了这篇文章

留下这个回答免得后人走冤枉路 :sob:这官方文档写的,搞死人

4年前 评论
讨论数量: 1

自己破案了
https://blog.csdn.net/mathphp/article/deta...
搞了半天是因为用了双数据库链接的原因
多亏了这篇文章

留下这个回答免得后人走冤枉路 :sob:这官方文档写的,搞死人

4年前 评论

自己破案了
https://blog.csdn.net/mathphp/article/deta...
搞了半天是因为用了双数据库链接的原因
多亏了这篇文章

留下这个回答免得后人走冤枉路 :sob:这官方文档写的,搞死人

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!