mysql - 不能禁用自动提交?

标签 mysql commit autocommit

我有 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/

相关文章:

mysql - 将 .NET 应用程序连接到 MySQL

commit - 删除某些内容时的语义提交类型

svn - 如果 Jira 问题键不在提交消息中,则限制 Subversion 提交

java - AutoCommit 不适用于 jOOQ 2.6.1 和 Tomcat 池

mysql 字符串比较 - md5 更快?

mysql - Rails,如何将数据从开发 sqlite3 数据库迁移到生产 MySQL 数据库?

MySQL:从三个表中选择?

php - mysqli::commit 和 mysqli::rollback 如何工作?

java - 大对象不能在自动提交模式下使用

mysql - 在 MySQLWorkbench 中使用事务执行存储过程总是自动提交?