Salut,
J'essaie de résoudre des problèmes de concurrence sur mon application. J'ai identifié un cas que je n'arrive pas à résoudre.
J'utilise le moteur INNODB (testé sur MySQL 5.5 et MariaDB 5.5)
Les transactions sont en READ COMMITED.
Voici mon scenario :
1) Je crée une table T avec 1 colonne 'id'
2) J'ouvre une transaction et j’exécute
INSERT INTO T (`id`) VALUES (1);
3) J'ouvre une autre transaction et j'effectue :
DELETE FROM T WHERE id in (3,4,5,6);
=> Cette requête est bloquée en attente d'obtention d'un verrou .
Si j'éxécute "delete from T where id in (3,4)" ou "delete from T where id i=3" ca marche bien.
SHOW ENGINE INNODB STATUS me donne :
Des idées ?------- TRX HAS BEEN WAITING 10 SEC FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 0 page no 3776 n bits 72 index `PRIMARY` of table T trx id 171E2D lock_mode X locks rec but not gap waiting
Record lock, heap no 3 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
Partager