1

当然,我可能做错了什么,但我真的不明白为什么以及如何做。

我想在 php 脚本中禁用自动提交。这是因为我个人的 php mysql 框架就是这样工作的。但不知何故无法关闭自动提交。我将 Mysqli 与 engine=InnoDB 表一起使用,并尝试了 mysqli::autocommit 功能以及用于全局和会话的 mysql 语句。

一切都会得到相同的答案:自动提交仍然开启。没有返回错误说我使用了不正确的语句。查询返回 true,尝试提交,返回 true。

我在这里有什么遗漏吗?自动提交必须在运行时关闭,因为它将运行的主机不允许我在服务器设置中禁用它:)

4

2 回答 2

2

http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_autocommit

默认情况下,客户端连接以autocommit设置为 1 开始。要使客户端以默认值 0 开始,请设置服务器的init_connect系统变量:

SET GLOBAL init_connect='SET autocommit=0';

init_connect变量也可以在命令行或选项文件中设置。要使用选项文件设置变量,如刚刚显示的那样,请包含以下行:

[mysqld]
init_connect='SET autocommit=0'

另请查看以下链接,有一种方法可以返回一个布尔值,该布尔值将指示提交是否成功打开/关闭。

也用于@@autocommit确定自动提交的当前状态。

于 2012-01-02T23:58:19.957 回答
0

谢谢大家,我的问题已经解决了!我以某种方式发现,当您没有明确地进行回滚或关闭连接时,插入会被提交。使用 register_shutdown_function 您可以进行回滚或关闭连接。

再次感谢您的帮助!

于 2012-01-03T13:01:12.820 回答