事务回滚无效,查看 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方法是执行了的。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

自己破案了
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年前 评论

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