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

#1 Re : Général » code erreur sql : 23505 unique_violation » 16/09/2015 10:24:48

Merci SAS pour cette précision concernant les Majuscules et les minuscules. Je ferai attention.
Pour le problème que j'ai rencontré, vu que je ne comprenais plus grand chose, j'ai détruit la table puis reconstruite avec uniquement des minuscules.
Ca a fonctionné ? tant mieux.
Dans un deuxième temps, j'ai tenu compte des autres remarques et je n'ai gardé que la clé primaire en integer, le reste a été transformé en chaîne de caractères.
Ca marche toujours.
Encore merci pour vos remarques.
Bonne journée

#2 Re : Général » code erreur sql : 23505 unique_violation » 14/09/2015 22:49:55

Bonsoir,
Bon, après avoir transformé toutes les majuscules en minuscules, CA MARCHE !!
A vrai dire je ne comprend pas pourquoi mais je retiens qu'il ne faut jamais mettre de majuscule quand on utilise postgresql.

Merci à vous.

#3 Re : Général » code erreur sql : 23505 unique_violation » 14/09/2015 16:17:56

Merci pour vos réposnes.

je remplace toutes les majuscules par des minuscules.

Le fichier .csv est un fichier tableur type excel. La syntaxe de celui que j'utilise est :"insee; nom ville    ; code postal; réacheminement(\LF\CR)"
le réacheminement est une chaîne de caractère qui ne m'intéresse pas donc je passe à la ligne à la fin du code postal.
Mon programme en C lit le fichier, récupère insee, nom ville et code postal puis les insère dans la table.
Ca fonctionne très bien pour les premières lignes, aucun pb. Par contre j'ai du mal à comprendre pourquoi ça bug à la ligne 9743 ?
Dans le fichier .cvs, cette ligne est : "26734; VILLEBOIS LES PINS         ; 5700; VILLEBOIS LES PINS"
Toutes les chaines de caractères font moins de 50 caractères c'est certain. Avant de lancer l'insertion dans la table, j'ai fait un certains nombres de test sur le fichiers .cvs pour déterminer la longueur max de chacune des chaines et pour déterminer le nombre de lignes.

pour ce qui est du 1/2 je crois que c'est un problème d'encodage. Ma console est en ISO 8852-1 et je pense que ça vient de là (peut être une erreur de transcription de guillement ?).

Par contre effectivement, vous avez raison, il faudrait que je mette des chaînes de caractères et pas des integer. Je vais corriger.

Je prend en compte toutes vos remarques dès ce soir et je vous tiens au courant.
Encore merci pour votre réactivité.

#4 Re : Général » code erreur sql : 23505 unique_violation » 14/09/2015 12:48:25

Bonjour,
Effectivement je n'ai pas été très précis.
Alors voila, ma base a la structure suivante :
-- Table: cpvilles

-- DROP TABLE cpvilles;

CREATE TABLE cpvilles
(
  "IdVille" integer NOT NULL, -- Clé sur la ville
  "NomVille" character(50),
  "CP" integer,
  "INSEE" integer,
  CONSTRAINT "idVille" PRIMARY KEY ("IdVille")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE cpvilles
  OWNER TO postgres;
COMMENT ON TABLE cpvilles
  IS 'Table des codes  postaux et des villes';
COMMENT ON COLUMN cpvilles."IdVille" IS 'Clé sur la ville';

Ensuite pour ce qui est des erreurs :
avec mon programme, sur la console j'ai :
"
INSEE : 26734
Code postale : 5700
ville : VILLEBOIS LES PINS
echec de la commande INSERT : ERREUR: syntaxe en entrée invalide pour l'entier  : 1/2  5700
"

Quand je passe en manuel sur PGadmin3, je rentre le insert into avec lea paramètres et j'ai un retour en SQL 23505

Je vais reprendre le code dans son ensemble ce soir.
Si vous avez des idées, merci beaucoup.

#5 Général » code erreur sql : 23505 unique_violation » 13/09/2015 14:19:13

stephane
Réponses : 9

Bonjour,
Je suis nouveau sur ce site. J'ai cherché une réponse à mon problème en utilisant le moteur de recherche mais il n'a rien trouvé.
Je me permet donc de vous poser la question :

J'utilise depuis peu postgresql et pour m'entraîner, je voudrais créer une table avec le nom des villes françaises, leur code postal et leur numéro insee. J'ai récupéré le fichier "officiel" sur data.gouv.fr où il y a un fichier .cvs qui contient toutes ces données. J'ai fait un petit programme en C. Il fonctionne très bien sur les 9742 premières lignes. Pour la 9743ième insertion, le programme s'arrête avec un message d'erreur sur la syntaxe du code postale (en l'occurrence 5700 pour la ville villebois les pins). J'ai essayé de faire cette insertion manuellement via PGadmin3 et j'ai une erreur SQL 23505. En regardant la doc, je trouve que cela correspond à unique_violation. J'ai plusieurs villes qui ont ce code postal et le programme les a bien inséré correctement dans la base, sans erreur ?? Je ne comprend pas trop ce que cela veut dire ?

Quelqu'un a-t'il une idée ?
D'avance merci.

Pied de page des forums

Propulsé par FluxBB