当然我可能做错了什么,但我真的不明白为什么以及如何做。
我想在 php 脚本中禁用自动提交。这是因为我个人的 php mysql 框架就是这样工作的。但不知何故无法关闭自动提交。我将 Mysqli 与 engine=InnoDB 表一起使用,我尝试了 mysqli::autocommit 功能以及全局和 session 的 mysql 语句。
一切都得到相同的答案:自动提交仍在进行中。没有返回说我使用了不正确的语句的错误。查询返回 true,尝试提交,返回 true。
我在这里遗漏了什么吗?必须在运行时关闭自动提交,因为它将运行的主机不允许我在服务器设置中禁用它:)
最佳答案
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'
另请查看以下 link ,有一种方法可以返回一个 bool 值,指示提交是否成功打开/关闭。
还可以使用 @@autocommit
来确定自动提交的当前状态。
关于php - 在 php 中禁用 mysql 自动提交不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706525/