【发布时间】:2019-09-20 09:56:37
【问题描述】:
我正在使用 MariaDB 版本 10.3.13。我上次检查时,autocommit 标志已打开。
MariaDB> SHOW VARIABLES WHERE Variable_name='autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
正如我在文档中看到的,当自动提交开启时,您无法按照here 所述回滚事务
默认情况下,MySQL 在启用自动提交模式的情况下运行。这意味着 一旦您执行更新(修改)表的语句, MySQL 将更新存储在磁盘上以使其永久化。改变 无法回滚。
所以我写了一个小脚本来测试。首先,我开始一个事务并更新一些数据:
BEGIN;
UPDATE foo SET year = 2019 WHERE id = 1;
Query OK, 1 row affected (0.000 sec)
Rows matched: 1 Changed: 1 Warnings: 0
看来我已经完成了。然后我回滚:
ROLLBACK;
Query OK, 0 rows affected (0.005 sec)
然后我再次检查更新的记录,我看到数据没有改变。这很奇怪,因为我认为数据总是会改变,因为autocommit 标志是打开的。
请解释一下原因。 谢谢
【问题讨论】:
标签: mysql mariadb autocommit