为什么在使用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!
我错过了什么?这一切为什么要发生?应该做些什么才能使它的行为正确?
编辑:
如果我在Debian x86_64.上使用start transaction而不是用5.0.51和5.1.49尝试,
答案:
我从零开始重新安装DB,包括完全删除以前的安装(清除),并从一开始就重新安装。
现在起作用了。
如果有人能解释我出了什么问题,我会很高兴的!
发布于 2010-11-27 07:51:10
我不认为你的代码有什么问题。下面正是Mac上的MySQL Ver 14.14远端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?什么站台?你是怎么输入这些命令的?例如,是否有可能在新连接中输入每个单独的命令?这也许可以解释这种行为。
https://stackoverflow.com/questions/4289001
复制相似问题