Уровни изоляции транзакций MySQL нарушены? - PullRequest
3 голосов
/ 25 августа 2009

Я не могу получить 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!!!

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

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

Ciao, Шелдон.

Ответы [ 2 ]

5 голосов
/ 25 августа 2009

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

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

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

SELECT @@storage_engine
0 голосов
/ 25 августа 2009

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

...