Vous n'êtes pas identifié(e).

#1 09/06/2010 17:40:50

LoganEcholls
Membre

Duplicate Key sur table vide

Bonjour à tous,

J'essai de faire un INSERT sur une table qui contient une clé primaire sur la colonne COL1

Après avoir totalement vidé la table, je fais un INSERT et il me retourne

ERROR: duplicate key violates unique constraint "col_pkey"
État SQL :23505


Y'aurait il une purge a effectué ou quelque chose du genre?


Merci beaucoup!!


Ps : Avant cette table ne comportait pas de clé primaire et c'est depuis l'ajout de celle-ci que j'ai cette erreur (la table est vidée est remplie tout les jours)

Hors ligne

#2 09/06/2010 19:51:52

gleu
Administrateur

Re : Duplicate Key sur table vide

À priori, votre table n'est pas vidé. Comment avez-vous essayé de vider la table ?


Guillaume.

Hors ligne

#3 10/06/2010 09:27:41

LoganEcholls
Membre

Re : Duplicate Key sur table vide

Bonjour gleu et merci de vous intéresser à mon problème!

J'ai fait un DELETE FROM COL1;

Suivi d'un SELECT * from COL1 qui ne me renvoi aucun résultat!!

Dernière modification par LoganEcholls (10/06/2010 09:28:09)

Hors ligne

#4 10/06/2010 10:32:42

flo
Membre

Re : Duplicate Key sur table vide

Tu as commité la transaction? (celle qui a fait la suppression)

Dernière modification par flo (10/06/2010 10:32:57)

Hors ligne

#5 10/06/2010 11:02:55

LoganEcholls
Membre

Re : Duplicate Key sur table vide

On m'a parlé de ça! Je pensait que c'était automatique sur postgres!

Alors j'ai testé ceci, mais peut être que j'utilise mal le COMMIT :

DELETE  FROM COL1;
COMMIT;

et ensuite quand je fais le INSERT j'ai toujours le DUPLICATE KEY

Dernière modification par LoganEcholls (10/06/2010 11:05:45)

Hors ligne

#6 10/06/2010 11:40:50

flo
Membre

Re : Duplicate Key sur table vide

Au fait, col1 est le  nom de la table, ou de la colonne ?
Dans le premier message, il est question d'une colonne, et pourtant l'ordre SQL écrit sur ce forum est
DELETE from col1
et non
DELETE from nomTable
Or si c'est le nom de la colonne il devrait y avoir un message d'erreur...

Hors ligne

#7 10/06/2010 15:55:45

gleu
Administrateur

Re : Duplicate Key sur table vide

Il serait certainement plus simple de montrer un script complet: la création de la table avec la clé primaire, l'ajout des lignes, leur suppression, puis l'ajout de lignes qui doit échouer d'après ce que vous dites.

Pour infos, le COMMIT avec PostgreSQL n'est implicite que si vous n'avez pas utiliser explicitement BEGIN.


Guillaume.

Hors ligne

#8 14/06/2010 09:43:45

LoganEcholls
Membre

Re : Duplicate Key sur table vide

Bonjour tout le monde et merci pour votre aide!

Effectivement je me suis mal exprimé, au début COL1 représentait ma colonne mais dans la suppression c'était effectivement ma table!

Au final je n'ai jamais résolu ce problème, j'ai donc supprimer la table et recrée, ça n'a pas fonctionnait non plus, j'avais toujours des DUPLICATE KEY (sur une table vide qui venait d'être recrée!!!!!)

Du coup j'ai supprimé la clé primaire et maintenant tout va bien!!

Hors ligne

#9 14/06/2010 09:45:29

gleu
Administrateur

Re : Duplicate Key sur table vide

En fait, ce qu'il nous manque réellement, c'est un scénario pour le reproduire ? à mon avis, le problème ne vient pas de PostgreSQL mais, au cas où ce serait le cas, je n'ai pas suffisamment d'informations pour remonter le problème aux développeurs.


Guillaume.

Hors ligne

#10 14/06/2010 09:49:18

flo
Membre

Re : Duplicate Key sur table vide

Supprimer une clé primaire est une très mauvaise idée. Mieux vaudrait essayer de comprendre ce qui n'a pas fonctionné dans ce que vous avez fait.
Mais sans la suite complète et précise des opérations que vous avez effectuées il est difficile de vous aider.

Hors ligne

#11 15/06/2010 10:53:02

LoganEcholls
Membre

Re : Duplicate Key sur table vide

Bonjour tout le monde.

Oui il parait que c'est une mauvaise idée de supprimer la clé primaire mais dans le cas de cette table je ne lui vois pas d'utilité!

Merci a tous pour vos réponses et désolé de ne pas avoir pu vous donner plus d'informations dans le descriptif de mon problème

Hors ligne

#12 15/06/2010 11:10:25

Marc Cousin
Membre

Re : Duplicate Key sur table vide

Si vous ne voyez pas l'utilité d'une clé primaire, c'est que ce n'est pas une vraie clé primaire.

La clé primaire est ce qui permet d'identifier de façon unique une donnée (je ne parle pas de clé primaire technique, mais d'une ou plusieurs colonnes de la table permettant de reconnaître un enregistrement). C'est la base de toute conception relationnelle. Sans clé primaire (et déclaration de celle-ci dans la base), la seule garantie que vous avez, c'est que la base sera corrompue. Et cela pourrait venir très vite.

Ou alors ce que vous essayez de stocker dans la base n'est pas de la donnée relationnelle. Mais vu le peu d'information qu'il y a dans ce thread à ce sujet, il est impossible d'en juger.


Marc.

Hors ligne

Pied de page des forums