php - 在 php 中禁用 mysql 自动提交不起作用

标签 php mysql autocommit

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

我想在 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/

相关文章:

sql - 事务是在 PostgreSQL 9.5.2 上自动提交的,没有更改它的选项?

php - 重新排序正则表达式匹配

php - 在二对多关系中使用两个表或使用三个表和一个数据透视表

php - 如何将表单数据传递到另一个页面和数据库?

php - MySQL 查询故障排除

mysql - 如何克隆表中的所有记录,同时向记录名称添加字符串并递增记录 ID

mysql - 如何关闭 MySQL 客户端的自动提交?

mysql - 错误: Method missing for Active record query : find_by_attribute_name ('test_data' ) not working

mysql - 每当创建模态的新实例时插入一个具有值的字段

MySQL:使用自动提交锁定表与启动事务