我有 Ubuntu 12.04 guest 虚拟机,上面有一个 MySQL 5.5.35 实例。我似乎无法绕过/关闭 autocommit
功能...
我想尝试一些与 SELECT ... FOR UPDATE;
相关的场景,所以我打开了两个数据库 session - 一个来自 VM 本身的 MySQL 工作台,另一个来自 >mysql
CLI,在我的 Windows 主机上。无论我在这两个 session 中的任何一个中做什么,都会立即在另一个 session 中看到。自动提交或无自动提交集、事务或无事务、显式提交或无显式提交...
我尝试了以下方法:
1) 通过配置禁用它
[mysqld]
autocommit = 0
根据 SHOW GLOBAL VARIABLES
,它有效地将全局 autocommit
变量设置为 OFF。不起作用。
2) 作为第一个命令运行此命令
set autocommit=0;
select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 1 |
+--------------+
不起作用。
3) 开启显式交易
start transaction; // tried begin; as well
...
commit;
不起作用。
该死的数据库作为自动提交始终开启,对于每个单独的 INSERT/UPDATE
语句,即使数据库设置和变量显示不同...... commit
语句始终返回 0 行受影响
。
我是不是漏掉了什么...? 这会以任何可能的方式与用户/权限相关吗...?
最佳答案
您使用的是支持事务的数据库引擎吗?例如如果您使用的是 MyISAM,则没有事务,并且无论如何自动提交都将保持不变
关于mysql - 不能禁用自动提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27533185/