Bonjour
Nous avons une table (Table_3) avec un INDEX UNIQUE sur deux champs (qui sont des clés étrangères égalements).
La Table_3 est mis à jour par des TRIGGERS insérés dans différentes tables afin de calculer des montants.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Table_1 id PRIMARY KEY (id) Engine=Innodb Table_2 id PRIMARY KEY (id) Engine=Innodb Table_3 id table_1_id table_2_id montant PRIMARY KEY (id) UNIQUE INDEX (table_1_id, table_2_id) CONSTRAINT FOREIGN KEY (table_1_id) REFERENCE Table_1 (id) CONSTRAINT FOREIGN KEY (table_2_id) REFERENCE Table_2 (id) Engine=Innodb
Nous faisons des INSERT ... ON DUPLICATE KEY ... pour mettre à jour cette table.
Nous nous sommes rendu compte que des doublons avaient été insérés dans cette table.
Nous avons donc fait un CHECK TABLE Table_3, qui nous a indiqué que l'INDEX UNIQUE était corrompu, d'où le soucis de doublons je suppose.
Pour résoudre le problème, nous avons renomé la Table_3 puis l'avons récrée entièrement en recalculant tous les montants (Nous avions essayés un REPAIR TABLE mais non fonctionnelle en Innodb).
Mais des doublons ont de nouveaux été insérés dans la table (environ 3000 doublons sur 2 millions).
Questions :
Un INDEX UNIQUE sur plusieurs champs peut il poser des soucis en Innodb ?
Qu'est ce qui peut faire que même après avoir recréé la table entièrement, nous avons de nouveau des doublons ? Ce peut il que ce soit un soucis au niveau des fichiers MySQL ?
Que nous conseillez vous pour réparer cette erreur ?
Mysql est en version 5.5.38.
La Table_3 contient environ 2 millions d'enregistrements.
Merci
Partager