不使用MySQL/InnoDB回滚事务

不使用MySQL/InnoDB回滚事务,mysql,transactions,innodb,Mysql,Transactions,Innodb,为什么在使用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

为什么在使用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 Lenny x86_64上尝试了5.0.51和5.1.49
回答:

我从头开始重新安装DB,包括完全删除以前的安装(清除),并从头开始重新安装

现在它起作用了

如果有人能解释我出了什么问题,我会非常高兴的

您缺少
启动事务
开始
语句,以便
回滚
具有任何上下文

我看到你的MySQL安装被破坏了。很高兴你修好了

您缺少
启动事务
开始
语句,以便
回滚
具有任何上下文


我看到你的MySQL安装被破坏了。很高兴你修好了

我认为你的代码没有任何问题。下面是Mac上MySQL版本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?什么站台?您如何输入这些命令?例如,是否可能在新连接中输入每个单独的命令?这也许可以解释这种行为。

我认为您的代码没有任何问题。下面是Mac上MySQL版本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?什么站台?您如何输入这些命令?例如,是否可能在新连接中输入每个单独的命令?这也许可以解释这种行为。

您的
启动事务
在哪里?您的
启动事务
在哪里?我已经尝试了所有
启动事务
开始
启动具有一致快照的事务
结果相同。我读过这个链接,但还是不知道该怎么办。你能给我一个例子吗?我已经尝试了所有的
start transaction
start
start transaction WITH CONSISTENT SNAPSHOT
,结果都是一样的。我读过这个链接,但还是不知道该怎么办。你能给我一个样品吗?有线
select version()
在Debian Linux x86_64上提供
5.0.51a-24+lenny1日志
,然后我键入了与您完全相同的内容(使用相同的连接从命令行运行mysql)我已经安装了版本
5.1.49
结果仍然相同。好的-我删除了mysql的所有安装,包括数据库和配置,并安装了新的。。。现在这就行了,有线电视
select version()
在Debian Linux x86_64上提供
5.0.51a-24+lenny1日志
,然后我键入了与您完全相同的内容(使用相同的连接从命令行运行mysql)我已经安装了版本
5.1.49
结果仍然相同。好的-我删除了mysql的所有安装,包括数据库和配置,并安装了新的。。。现在这是可行的。