Page 1 sur 2

#1062 duplicate entry '127' for key 1

Posté : 21 mars 2005, 09:52
par FAbrice
Bonjour,

je viens d'arriver au boulot et mes collègues me signelent qu'il est impossible d'ajouter des enregistrements dans la table "actions".
apres plusieurs essais infructueux, je suis passé directement par easy php pour insérer un enreistrement.

mais la, il me met le message "#1062 duplicate entry '127' for key1"

j'ai supprimé cet enregistrement et refait un nouveau enregistrement et ca a marché. j'ai donc voulu en faire un autre, mais la, de nouveau le message d'erreur.

j'ai vérifié qu'il n'ai pas 2 fois le 127!!!

est ce que quelqu'un aurait une solution a ce problème???

pour info, il m'est possible de faire des enregistrements sous les autres table.

merci de votre aide,
FAb

Posté : 21 mars 2005, 10:33
par sadeq
sans voir la structure de la table, la requête INSERT utilisée et certaines valeurs existantes on ne peut rien dire. Mais le message "#1062 " concerne un doublon de valeur de clé primaire ou d'index unique c'est à dire que la valeur entrée existe déja soit dans champ jouant le rôle de clé primaire ou index unique.
Regardez du côté du vérouillage d'enregistrement et de la gestion de l'indexation, consultez ce lien :
http://www.nexen.net/docs/mysql/annotee ... ?lien=lock pour plus d'informations

Posté : 21 mars 2005, 11:35
par Cyrano
Si tu as une clé primaire en "auto-increment", l'affichage de l'erreur vient de ce que tu envoies une valeur de clé primaire toi-même alors qu'elle existe déjà. Dans ta requête d'insertion, tu peux n'envoyer que les valeurs des autres champs sans mettre de clé primaire puis récupérer cette valeur de clé avec LAST_INSERT_ID (ou quelque chose de ce genre) si tu en as besoin pour mettre à jour certaines autres tables. La clé primaire sera générée automatiquement par le SGBD.

Posté : 21 mars 2005, 12:45
par FAbrice
bonjour les gars!

merci de vos réponses;

ce que je en compends pas c pourkoa ca arrive alors que je n'ai rien touché a ma requete et à ma table via le panneau admin de easyphp ! :x

que'est ce que je pourrai vous fournir pour que vous puissiez mieux cibler le pb????

merci de votre aide,
FAb

Posté : 21 mars 2005, 12:55
par Cyrano
Disons qu'avec la structure de la table et le bout de code qui fait l'insertion, on verra mieux où chercher le bobo

Posté : 21 mars 2005, 14:11
par ayayaaa
Salut

Quel est le type de ton identifiant??
Apparement tu as du mettre un identifiant en tinyint qui permet de gérer que peu de valeur(255) en entier signé et ca doit buggué a partir de ton 127eme enregistrement.

essaye avec mediumint unssigned comme type pour ton champs ID.

Ayayaaa

Posté : 21 mars 2005, 19:06
par FAbrice
Alut :D

g retrouvé le sourrir grace a vous :P

en fait, j'ai juste changer "tinyint " par "mediumint " et maintenant tout va bien!
MERCI 8)

sinon, ca apporte koa unssigned ??
et ou est ce que je pourrai trouver la signification des option posiibles pour les champs des tables dans easyphp???

merci bcq,
FAb

Posté : 21 mars 2005, 19:45
par flitox
Tu trouveras ton bonheur ici ;)

http://www.nexen.net/docs/mysql/annotee ... erview.php

Pour info ce n'est pas easyphp qui contient des champs mais MySQL ;)

Posté : 21 mars 2005, 19:58
par FAbrice
re,

merci pour le lien!

dsl pour le l'apsus des doigts 8)

merci encore,
FAb

Posté : 21 mars 2005, 20:45
par ayayaaa
Re

si tu mets pas unsigned ton champs pourra contenir des nombres allant de -k à +k.
Or pour un identifiant tu n'as pas besoin des nombres négatifs.
Si tu mets unsigned tu pourras entrer des nombres dans ton champs allant de 0 à +2k.
Donc pour la même taille mémoire utilisé sur ton serveur tu peux mettre 2 fois plus d'enregistrement.

AYAYAAA

Posté : 21 mars 2005, 21:58
par FAbrice
re re

Pas mal ton explication!! c un bon moyen de gagner "de la place"!!!

merci encore,
FAb

Posté : 31 mars 2005, 16:19
par Invité
Hey merci pour ce post qui a répondu à mon problème !

Posté : 30 nov. 2005, 15:36
par fowler
Je possède la même erreur, voila mon code
# TABLE: phpbb_search_wordlist
#
DROP TABLE IF EXISTS phpbb_search_wordlist;
CREATE TABLE phpbb_search_wordlist(
word_text varchar(50) NOT NULL,
word_id mediumint(8) unsigned NOT NULL auto_increment,
word_common tinyint(1) unsigned NOT NULL,
PRIMARY KEY (word_text),
KEY word_id (word_id)
);

Je ne sais pas quoi changer, car je suis pas un expert avec les tinyint, mais mon erreur est la suivante
Image

Merci les gars de votre aide, si jamais je suis sur msn [email protected] si qqn veut m'expliquer en live

Posté : 30 nov. 2005, 15:50
par zeus
Est-ce que tu as lu le post ?

parce que cette erreur signifie que tu veux insérer une ligne dont la clé primaire existe déjà dans la table

Posté : 30 nov. 2005, 15:54
par Invité
J'ai pas très bien compris ton message.

En fait quand j'enlève la ligne qui est à double dans la base que je veux importer, ça marche, mais je dois le faire pour tous les mots à double, exemple :
préparation - preparation / Il y aura une erreur #1062
complétement - completement / Il y aura une erreur #1062

Mais d'après ce que j'ai pu comprendre en modifiant tinyint par autre chose ça devrait marcher, est-ce que tu vois mon problème depuis le code que j'ai mis plus haut ?