Autor Zpráva
MaK
Profil
Mám tabulku
CREATE TABLE tab 
(
`name` varchar(128) COLLATE ascii_bin NOT NULL,
`tm` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=ascii COLLATE=ascii_bin;

a v kódu se snažím získat řádek pod kontrolu a následně s ním něco provést:
Přes konzoli není problém:

T1: SET autocommit=0;
T2: SET autocommit=0;
T1: SELECT * FROM tab WHERE name='neco' FOR UPDATE
T2: SELECT * FROM tab WHERE name='neco' FOR UPDATE -> čeká
T1: COMMIT nebo ROLLBACK
T2: pokračuje

V realném provoze však dochazí k deadlocku.
Může mě někdo popostrčit, proč při zamykání jednoho řádku dochazí k deadlocku.

MaK

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: