MySQL默认autocommit=ON,每个DML语句自动提交;设autocommit=0/OFF可关闭(仅当前会话),但MyISAM不支持事务,全局设置需SUPER权限且不推荐,GUI工具可能覆盖该设置。
MySQL 默认开启自动提交(autocommit=ON),每个 INSERT、UPDATE、DELETE 语句都会立即生效并持久化。要关闭它,核心是把 autocommit 设为 0 或 OFF,但需注意作用范围和存储引擎限制。
连接 MySQL 后,先查一下是否真的开着:
SHOW VARIABLES LIKE 'autocommit';Value 是 ON 或 1 表示已启用;OFF 或 0 表示已关闭这是最常用、最安全的方式,不影响其他连接:
SET autocommit = 0; 或 SET autocommit = OFF;
COMMIT; 或 ROLLBACK;
START TRANSACTION; 或 BEGIN;,此时即使 autocommit=ON,也会临时进入事务模式(但推荐统一关 autocommit 来避免混淆)不是所有场景都能成功关闭自动提交:
autocommit=0,COMMIT/ROLLBACK 也无实际效果(只对 InnoDB、XtraDB 等事务型引擎有效)SET GLOBAL autocommit = 0; 会影响所有新连接,但需要 SUPER 权限,且重启后失效;普通应用应避免改全局关完 autocommit 后,可以快速测试是否真正起效:
UPDATE 语句(如修改某条记录的字段)COMMIT;,再查,变化才可见;或执行 ROLLBACK; 撤销