我刚刚注意到,在使用 PHP 和 RedBean(以及一个事务)将一些数据导入 MySQL 数据库时,我可以看到在导入运行时行数在增长。为了证实我的怀疑,我在导入函数的末尾将 更改为并尝试导入R::commit()
。R::rollback()
事实上,即使我调用回滚,数据也是导入的并且是永久的。
我不知道为什么交易没有完成它的工作,也不知道从哪里开始寻找,因此这个问题。这是函数的导入部分。让我指定除了事务不工作之外,导入功能工作得很好,所以没有必要剖析它。
感谢任何和所有的假设
我刚刚注意到,在使用 PHP 和 RedBean(以及一个事务)将一些数据导入 MySQL 数据库时,我可以看到在导入运行时行数在增长。为了证实我的怀疑,我在导入函数的末尾将 更改为并尝试导入R::commit()
。R::rollback()
事实上,即使我调用回滚,数据也是导入的并且是永久的。
我不知道为什么交易没有完成它的工作,也不知道从哪里开始寻找,因此这个问题。这是函数的导入部分。让我指定除了事务不工作之外,导入功能工作得很好,所以没有必要剖析它。
感谢任何和所有的假设
啊哈!知道了。急于证明@furier 错了,我查阅了RedBean 事务文档并偶然发现了一个非常有用的注释:
许多数据库在更改架构后会自动提交,因此请确保您在之后测试您的事务
R::freeze(true);
!
R::freeze(true);
总而言之,如果您没有使用中断应用程序中的所有事务操作来冻结 RedBean,某些数据库可能会自动提交