【问题标题】:MySQL transaction isolation levels broken?MySQL事务隔离级别坏了?
【发布时间】:2010-11-22 15:42:13
【问题描述】:

我似乎无法在 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!!!

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

所以我的问题是自动提交并没有真正被禁用,因此实际上忽略了事务隔离级别?

Ciao, 谢尔顿。

【问题讨论】:

    标签: mysql transactions isolation


    【解决方案1】:

    默认情况下,您的表似乎是在MyISAM 中创建的。

    它不支持事务。

    请运行以下命令:

    SELECT @@storage_engine
    

    【讨论】:

    • 似乎是最有可能的解释。
    • MyISAM 存储引擎在 MySQL 5.0 中是默认的。
    【解决方案2】:

    抱歉,您确定要使用 innodb 表吗?您必须检查您的默认存储引擎。

    【讨论】:

    • 最好将此答案更改为commet。
    猜你喜欢
    • 1970-01-01
    • 2013-08-27
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2011-09-30
    • 2015-10-18
    • 2015-07-21
    相关资源
    最近更新 更多