Уровни изоляции транзакций MySQL нарушены?

Я не могу получить MySQL 5.0.32 на 32-битном x86 Debian для соблюдения уровней изоляции транзакций.

Я сократил мою проблему до самой простой формы, протестированной с помощью клиента командной строки 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!!!

Вероятно, связано, я заметил, что ряд остается даже после отката!

Итак, я хочу сказать, что автокоммит на самом деле не отключен, и что уровни изоляции транзакций, таким образом, эффективно игнорируются?

Чао, Шелдон.

2 ответа

Решение

Ваши таблицы, кажется, созданы в MyISAM по умолчанию.

Он не поддерживает транзакции.

Не могли бы вы выполнить следующее:

SELECT @@storage_engine

Извините за вопрос, но вы уверены, что используете u sn innodb table? Вы должны проверить ваш механизм хранения по умолчанию.

Другие вопросы по тегам