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

DB::beginTransaction();
try {
    操作1;
    操作2DB::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 方法是执行了的。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

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

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

5年前 评论
讨论数量: 1

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

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

5年前 评论

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

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

5年前 评论