MySQL默认autocommit=1,每条DML立即生效;关闭需SET autocommit=0(会话级)或用START TRANSACTION显式控制事务,MyISAM不支持事务,连接池中需注意状态残留。
MySQL 默认开启自动提交(autocommit = 1),也就是说每条 INSERT、UPDATE、DELETE 语句都会立即生效并持久化。要关闭它,核心是设置当前会话的 autocommit 变量为 0 或 OFF。
执行以下命令确认当前设置:
SELECT @@autocommit; —— 返回 1 表示开启,0 表示关闭SHOW VARIABLES LIKE 'autocommit'; —— 显示更明确的 ON/OFF 值该设置只影响当前连接,退出后失效,最常用也最安全:
SET autocommit = 0; 或 SET autocommit = OFF;
COMMIT; 才生效,或用 ROLLBACK; 撤销START TRANSACTION,只要 autocommit=0,第一条 DML 就已隐式开启事务相比全局关 autocommit,这种方式更推荐,逻辑更清晰,且事务结束后自动恢复默认行为:
START TRANSACTION; 或简写 BEGIN;
COMMIT;;出错或需撤回 → ROLLBACK;

不是所有场景都适合关 autocommit:
autocommit = 0,也无法真正回滚,建议优先使用 InnoDBSET autocommit = 1;
mysql --init-command="SET autocommit=0;" -u root -p,避免每次手动输