MySQL事务隔离级别是否存在问题?

3

我似乎无法让32位x86 Debian上的MySQL 5.0.32遵守事务隔离级别。

我已将问题简化为其最简形式,并使用mysql命令行客户端进行了测试:

-- On node writer:
--

DROP TABLE test;
CREATE TABLE test (
    name VARCHAR(255)
);

set autocommit=0;
set transaction isolation level read committed;
begin;

-- On node reader:
--

set autocommit=0;
set transaction isolation level read committed;
begin;

-- On node writer:
--

INSERT INTO test VALUES ('bob');

-- On node reader:
--

SELECT * from test;
-- Returns the row with bob in it!!!

可能相关的是,我注意到即使回滚后行仍然存在!

所以我的猜测是自动提交并没有真正禁用,因此事务隔离级别被有效地忽略了?

再见, Sheldon。

2个回答

5
你的表默认是用MyISAM创建的。
它不支持事务处理。
请运行以下命令:
SELECT @@storage_engine

似乎是最有可能的解释。 - MarkR
MySQL 5.0 中默认的存储引擎是 MyISAM。 - Light.G

0

抱歉问一下,但您确定您正在使用InnoDB表吗?您需要检查您的默认存储引擎。


最好将此答案更改为注释。 - Light.G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接