gpt4 book ai didi

mysql - MySQL/InnoDB 不回滚事务

转载 作者:行者123 更新时间:2023-11-29 00:59:30 25 4
gpt4 key购买 nike

为什么使用InnoDB引擎时,下面的事务没有回滚?

create table test ( i integer ) Engine = InnoDB;
begin;
insert into test(i) values(10);
insert into test(i) values(20);
rollback;
select count(*) from test;

返回 2 而不是 0!

我错过了什么?为什么会这样?应该怎么做才能使其正常运行?

编辑:

  • 如果我使用 start transaction 而不是 begin,则同样不起作用
  • 我在 Debian Lenny x86_64 上尝试过 5.0.51 和 5.1.49。

回答:

我从头开始重新安装了数据库,包括完全删除以前的安装(清除)- 并从头开始重新安装。

现在可以了。

如果有人能向我解释哪里出了问题,我将非常高兴!

最佳答案

我认为您的代码没有任何问题。这正是 Mac 上 MySQL Ver 14.14 Distrib 5.1.44 上的代码,显示了您期望的结果:

mysql> create table test (i integer) Engine = InnoDB;
Query OK, 0 rows affected (0.10 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test(i) values(10);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test(i) values(20);
Query OK, 1 row affected (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from test;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.01 sec)

mysql>

您使用的是什么版本的 MySQL?什么平台?你是如何输入这些命令的?例如,您是否有可能在新连接中输入每个单独的命令?这或许可以解释这种行为。

关于mysql - MySQL/InnoDB 不回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com