【发布时间】:2012-01-02 23:51:37
【问题描述】:
当然我可能做错了什么,但我真的不明白为什么以及如何做。
我想在 php 脚本中禁用自动提交。这是因为我个人的 php mysql 框架就是这样工作的。但不知何故无法关闭自动提交。我将 Mysqli 与 engine=InnoDB 表一起使用,并尝试了 mysqli::autocommit 功能以及用于全局和会话的 mysql 语句。
所有结果都是相同的答案:自动提交仍然打开。没有返回错误说我使用了不正确的语句。查询返回 true,尝试提交,返回 true。
我在这里有什么遗漏吗?自动提交必须在运行时关闭,因为它将运行的主机不允许我在服务器设置中禁用它:)
【问题讨论】:
-
在某些情况下为我工作 - 你能分享任何代码吗?您如何设置/启动交易?在运行命令之前如何确保自己确实处于事务中?
-
你试过
start transaction;查询吗? -
好吧,目前我关闭了自动提交,它说自动提交值为 0。但即便如此,任何插入查询都会以某种方式提交。 @pageid,我所做的就是关闭自动提交,运行插入查询,然后运行一个保存点函数,该函数实际上运行我的 save($commit=false) 函数,该函数将执行插入,但不执行提交。奇怪的是,保存是唯一使用 mysqli_commit 的函数...
-
好吧,我已经尝试了启动事务,在 navicat 中按预期工作,在 PHP 中没有......它仍然提交,而自动提交关闭并且启动事务正在运行..
-
必须以某种方式调用回滚,现在我的问题在于何时执行?因为在 php 的 __destruct 函数中,包含连接的变量正在被销毁...
标签: php mysql autocommit