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!!!

おそらく関連していますが、ロールバック後も行が残っていることに気付きました!

だから私の質問は、自動コミットが実際には無効になっておらず、トランザクションの分離レベルが事実上無視されているということですか?

チャオ、シェルドン。

4

2 に答える 2

5

あなたのテーブルはMyISAMデフォルトで作成されているようです。

トランザクションには対応していません。

以下を実行してください。

SELECT @@storage_engine
于 2009-08-25T14:34:21.650 に答える
0

質問で申し訳ありませんが、innodb テーブルを使用していますか? デフォルトのストレージ エンジンを確認する必要があります。

于 2009-08-25T14:36:52.237 に答える