Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/08/2011, 13h48   #1
Membre confirmé
 
Homme Cédric Girard
Développeur Web
Inscription : mai 2002
Messages : 295
Détails du profil
Informations personnelles :
Nom : Homme Cédric Girard
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Santé

Informations forums :
Inscription : mai 2002
Messages : 295
Points : 273
Points : 273
Par défaut Réplication de LOAD DATA INFILE et violation de clefs primaires

depuis quelques jours nous avons des soucis avec un LOAD DATA INFILE, exécuté chaque matin : il tourne parfaitement sur le premier serveur, le maitre, mais l'esclave affiche cette erreur et bloque la réplication :
Citation:
duplicate entry '4643' for key 1' on query. Default database: 'mybase'.
Voici la requête :
Code :
LOAD DATA INFILE '/tmp/SQL_LOAD-2-1-2768.data' REPLACE INTO sb_529283754_user FIELDS terminated BY ';' LINES terminated BY '\n' (username, password, lastname, firstname, numero_rue, bis_ter_q, voie, adresse_1, adresse_2, cp, localite, email)
En la jouant à la main, elle tourne bien (après que l'on ait fait un chmod 666 sur le fichier de /tmp). Le truc bizarre est que la clef primaire porte sur le champ user_id, champ autoincrémenté et absent de l'import. Le même code tourne sur 15 bases de données, et seules 2 ou 3 plantent. Il y a même des matins sans erreurs. Etrange.

Mysql version : 5.0.91-b22.lenny.33-log

Cordialement,
Cédric

describe table
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
+--------------+--------------+------+-----+---------+----------------+
| FIELD        | Type         | NULL | KEY | DEFAULT | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| user_id      | int(10)      | NO   | PRI | NULL    | AUTO_INCREMENT | 
| username     | varchar(32)  | YES  |     | NULL    |                | 
| password     | varchar(32)  | NO   |     |         |                | 
| email        | varchar(100) | YES  |     | NULL    |                | 
| langage      | char(5)      | NO   |     | NULL    |                | 
| ip_1         | varchar(16)  | NO   |     |         |                | 
| ip_2         | varchar(16)  | NO   |     |         |                | 
| ip_3         | varchar(16)  | NO   |     |         |                | 
| id_group     | int(10)      | NO   |     | 0       |                | 
| id_category  | int(10)      | NO   |     | 0       |                | 
| city         | varchar(32)  | YES  |     | NULL    |                | 
| firstname    | varchar(32)  | YES  |     | NULL    |                | 
| lastname     | varchar(32)  | YES  |     | NULL    |                | 
| session_data | text         | YES  |     | NULL    |                | 
| numero_rue   | varchar(4)   | NO   |     |         |                | 
| bis_ter_q    | char(1)      | NO   |     |         |                | 
| voie         | char(3)      | NO   |     |         |                | 
| adresse_1    | varchar(50)  | NO   |     |         |                | 
| adresse_2    | varchar(50)  | NO   |     |         |                | 
| cp           | varchar(5)   | NO   |     |         |                | 
| departement  | varchar(20)  | NO   |     | -1      |                | 
| localite     | varchar(35)  | NO   |     |         |                | 
+--------------+--------------+------+-----+---------+----------------+
et le show keys
Code :
1
2
3
4
5
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| TABLE             | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | NULL | Index_type | Comment |
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| sb_529283754_user |          0 | PRIMARY  |            1 | user_id     | A         |        2321 |     NULL | NULL   |      | BTREE      |         | 
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
cedricgirard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 09h42   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 019
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 019
Points : 18 302
Points : 18 302
Envoyer un message via MSN à CinePhil
Quelqu'un aurait-il joué avec la valeur de l'auto-incrément ?
Puisque c'est un identifiant auto-incrémenté qui pose problème, il faut chercher le max de cet id et passer la valeur de l'auto-incrément à max + 1 avant de faire l'importation.

Mais d'une manière générale, on ne touche jamais à la valeur d'un auto-incrément ou d'un identifiant auto-incrémenté.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2011, 00h39   #3
Membre confirmé
 
Homme Cédric Girard
Développeur Web
Inscription : mai 2002
Messages : 295
Détails du profil
Informations personnelles :
Nom : Homme Cédric Girard
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Santé

Informations forums :
Inscription : mai 2002
Messages : 295
Points : 273
Points : 273
Il n'est pas touché non, c'est effectivement mal de jouer à ça, et encore plus sur des serveurs en réplication à priori. De plus l'import ne plante pas à la première ligne, il semble bien en mettre à jour un certain nombre avant de bloquer (id mentionné par l'erreur et temps du traitement).
La table est par contre régulièrement vidée, truncatée et re-remplie (donc son autoinc repart à zéro régulièrement).

Bref, j'ai de plus en plus l'impression d'un bug entre le load data infile et la réplication, je vais faire un test de bourrin la semaine prochaine, j'aviserai après.
cedricgirard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h37.


 
 
 
 
Partenaires

Hébergement Web