我刚注意到,在使用PHP和RedBean(以及事务)将一些数据导入MySQL数据库时,我可以看到导入运行时行数增加。为了确认我的怀疑,我在导入功能结束时将R::commit()
更改为R::rollback()
并尝试导入。实际上,即使我调用了回滚,数据也是导入的并且是永久性的。
我不知道为什么交易没有做到这一点,也不知道从哪里开始寻找,因此这个问题。 Here's the import part of the function。让我指出除了交易不起作用之外,导入功能工作得很好,所以没有必要剖析它。
感谢任何和所有假设
答案 0 :(得分:9)
AHA!得到它了。急于证明@furier错了我抬起RedBean transaction documentation并偶然发现了一个非常有用的说明:
许多数据库在更改架构后会自动提交,因此请确保在
R::freeze(true);
之后测试您的交易!
总而言之,如果您没有使用R::freeze(true);
冻结RedBean来破坏应用程序中的所有事务操作,则某些数据库可能会自动提交