Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/08/2013, à 18:54

neokal

BUG des doublons avec mysql -> ERROR 1062 (23000)

Bonsoir à tous,
comme le titre l'indique il me semble que j'ai un petit bug en voulant supprimer les doublons dans ma base mysql
aprés doute j'ai suivi à la ligne le tuto dispo ici
http://blogmotion.fr/programmation/php- … ssion-1588
et la meme résultat que sur ma base
j'ai la réponse

ERROR 1062 (23000): Duplicate entry 'durand-marc' for key 'nom'

évidement que j'ai 'duplicate entry' vu que j'essai de supprimer les doublons ))
aprés avoir chercher sur le net j'ai trouver ça
http://www.developpez.net/forums/d11207 … 49-debian/
le gars y parle d'un bug 'connu' et d'un patch, mais aucun lien, si ça peut aider j'ai une distri lubuntu 13.04 en 64 bits
j'ai deja répértorié un autre bug sur cette distri dont voici le descriptif ici
http://forum.ubuntu-fr.org/viewtopic.php?id=1324531
voila si quelqu'un connait un reméde ou un truc a fouiller je suis preneur


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#2 Le 29/08/2013, à 23:53

david96

Re : BUG des doublons avec mysql -> ERROR 1062 (23000)

Bonsoir,

Dans le tuto du premier lien que tu nous présentes, à cette ligne :

ALTER IGNORE TABLE membre ADD UNIQUE INDEX(nom,prenom);

As-tu bien bien spécifié ce qui te concerne, à savoir (nom,prenom)…  Tout dépend de ta base de données,  mais le plus simple est de nous indiquer la table concernée :

desc table;

Remplace table par le nom que tu as lui donné.

Dernière modification par david96 (Le 29/08/2013, à 23:53)

Hors ligne

#3 Le 30/08/2013, à 20:33

neokal

Re : BUG des doublons avec mysql -> ERROR 1062 (23000)

mysql> desc membre;
+--------------+-------------+------+-----+-------------------+----------------+
| Field        | Type        | Null | Key | Default           | Extra          |
+--------------+-------------+------+-----+-------------------+----------------+
| id           | int(10)     | NO   | PRI | NULL              | auto_increment |
| nom          | varchar(30) | YES  |     | NULL              |                |
| prenom       | varchar(30) | YES  |     | NULL              |                |
| age          | int(3)      | YES  |     | NULL              |                |
| datecreation | timestamp   | NO   |     | CURRENT_TIMESTAMP |                |
+--------------+-------------+------+-----+-------------------+----------------+
5 rows in set (0.00 sec)

J'ai suivi à la lettre le tuto dans le lien, même variable, meme table ....
C'est pour cela que j'ai titré le topic ' BUG des doublons avec mysql'.
Cela ne me semble pas normal


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#4 Le 30/08/2013, à 21:58

david96

Re : BUG des doublons avec mysql -> ERROR 1062 (23000)

Effectivement je viens de tester, j'ai la même erreur (duplicate) normale.

Voilà ce que nous dis la doc mysql :

mysql a écrit :

IGNORE est une extension MySQL pour ANSI SQL92. Cette option contrôle la fa¸on dont ALTER TABLE fonctionne s'il y a des duplications sur une clef unique de la nouvelle table. Si IGNORE n'est pas spécifiée, la copie est annulée et la table originale est restaurée. Si IGNORE est spécifiée, les lignes contenant les éléments doublons de la table seront effacées, hormis la première, qui sera conservée.

http://dev.mysql.com/doc/refman/5.0/fr/alter-table.html

Pour l'extension voir la :
http://dev.mysql.com/doc/refman/5.0/fr/ … -ansi.html

Si c'est trop galère, on peut le faire avec un langage tiers, comme PHP, ça sera vite fait tongue
Genre

$base="fichier de configuration pour se connecter à ta base mysql_connect()";
$sql="SELECT id from membre GROUP BY nom,prenom HAVING count(*) > 1"; // on récupère les doublons ;)
$v=mysql_query($sql,$base);
while($s=mysql_fetch_assoc($v))
{
   $requete="DELETE from membre WHERE id=".$s['id'];
}

Dernière modification par david96 (Le 30/08/2013, à 21:59)

Hors ligne