php - MySQL的事物怎么失效了?没有被回滚。
本文介绍了php - MySQL的事物怎么失效了?没有被回滚。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
用的yii1框架,我用wireshark抓了MySQL的查询包。
首先是发送了:START TRANSACTION查询,然后后面有insert查询,最后也发送了ROLLBACK查询。
但是我一看数据库,那个insert查询的数据在数据库里面有,这可能是怎么回事呀?
我发现里面调用了一个存储过程,存储过程里面有开始一个新的事物,然后提交。不会是这里影响的吧?
存储过程是在insert语句前面调用的。
解决方案
mysql不支持事务嵌套,如果存储过程里使用了事务,那在这一层就提交了事务,如果你的会话没有设置autocommit=0,那你的后面的insert单独就是一个事务,执行完就提交了,后面的rollback根本没用
这篇关于php - MySQL的事物怎么失效了?没有被回滚。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文