php - MySQL的事物怎么失效了?没有被回滚。

查看:75
本文介绍了php - MySQL的事物怎么失效了?没有被回滚。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

用的yii1框架,我用wireshark抓了MySQL的查询包。
首先是发送了:START TRANSACTION查询,然后后面有insert查询,最后也发送了ROLLBACK查询。
但是我一看数据库,那个insert查询的数据在数据库里面有,这可能是怎么回事呀?

我发现里面调用了一个存储过程,存储过程里面有开始一个新的事物,然后提交。不会是这里影响的吧?
存储过程是在insert语句前面调用的。

解决方案

mysql不支持事务嵌套,如果存储过程里使用了事务,那在这一层就提交了事务,如果你的会话没有设置autocommit=0,那你的后面的insert单独就是一个事务,执行完就提交了,后面的rollback根本没用

这篇关于php - MySQL的事物怎么失效了?没有被回滚。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆