Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 29/10/2007, 11h22   #1
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut [postgresql] Requête sans résultat

Bonjour,

J'ai une requête qui ne renvoie aucun résultat :

Code :
SELECT dep_lib FROM departement WHERE dep_id='01'
Alors que la suivante me renvoie bien le résultat "01"

Code :
SELECT dep_id FROM departement WHERE dep_lib='Ain'
Ma table "departement" contient deux colonnes "dep_id" et "dep_lib" de type text (car certains dep sont "2A", "2B" etc...). J'étais avant en character varying (2) mais en debuggant je suis passé en type "text" pour être tranquille.

Le département de l'Ain est donc enregistré en base avec l'identifiant "01" et la requête fonctionne pour tous les autres départements. Seul le "01" ou "1" ne renvoie rien.

Avant mes premiers départements étaient 1,2,3 ... j'ai rajouté un "0" pour que tous les départements soient sur 2 caractères (soucis de propreté et d'affichage).

Pour résumé, peu importe l'identifiant "1" ou "01" de type "character" ou "character varying" ou "text" sont non reconnus dans une requête. Surement une histoire d'octet mais je n'arrive pas à la résoudre.

merci de vos lumières
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 11h25   #2
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Pour info : PostgreSQL 7.4.9
Je suis chez un hébergeur pro, pas de migration possible de postgresql.
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 11h28   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 5
Points : 4
Points : 4
Par défaut Question

J'immagine que tu as déjà essayé de copier le résultat de la seconde requête et de l'utiliser comme paramètre de la première ? Je sais (par expérience) qu'il nous arrive souvent dans des moments de fatigue d'insérer des espaces ou autres caractères dans nos tables.

Salutations
Oscar
oscar78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 11h31   #4
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Oui je l'ai fais.
Aucun oubli...

J'ai vu que lorsque les données sont trop petite, des espaces sont rajoutés par postgresql, mais ce n'est pas le cas ici. Ce maudit "01" n'est pas bien traité par postgresql
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 11h35   #5
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
alors là je suis bluffé...

Tu as raison oscar, en copie-collant "01" dans la page de résultat et en remplaçant mon "01" par celui-ci, la requête fonctionne mais si je tape "01" avec mon clavier à la place du "01" copié-collé, ça ne fonctionne plus. Il n'y a aucun caractère ni espace supplémentaire que "0" et "1".

J'en déduis un problème d'encodage....n'est-ce-pas?

...
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 12h02   #6
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Fichier CSV intégré = UTF-8
Base = UTF-8 UNICODE
Fichier PHP encodé en UTF-8
META NAME UTF-8

Je ne bosse qu'en UTF-8 à 100%...
Je suis complètement paumé pour débugguer mon problème...

Quelqu'un peut me guider ?

Je rappelle les étapes :

Code :
SELECT dep_id FROM departement WHERE dep_id='01'
Me renvoi rien
Code :
SELECT dep_id FROM departement WHERE dep_lib='Ain'
Me renvoi "01"
Je copie "01" sur l'écran et je le colle à la place de mon '01'
Code :
SELECT dep_id FROM departement WHERE dep_id='01'
Me renvoi "Ain".

Je comprends rien à mon problème.
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 12h03   #7
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Ah...ben justement tient...en faisant un copier-coller du "01" vous avez-vu ce qui apparait dans mon dernier message!!

Meuh queu sskeu ceu kça!
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 12h07   #8
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Visiblement il s'agit d'un BOM, d'une signateure UNICODE rajouté par je ne sais trop quoi encore.
Mon CSV est édité par EXCEL et je l'encode en UTF-8 avec le bloc note.
Pour tous mes chiffres 1 situés entre les ";", le bloc note m'aurait rajouté ce caractère "".

Reste à savoir comment m'y prendre pour zapper ce problème
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 12h07   #9
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Caractère foireux en l'occurence puisqu'il ne s'affiche pas ici lol
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 14h33   #10
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
J'ai fais des recherches, la BOM s'avère être enregistrée dans la base de données !
Plus précisément dans la table des départements, que j'ai nourrie avec un CSV assez en vogue sur le net : http://www.galichon.com/codesgeo/

Je ne pense pas que cette BOM était dans le CSV car je l'ai déjà utilisé sans problème. Je soupçonne postgresql 7.4...possible??
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 14h01   #11
Invité de passage
 
Inscription : septembre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 5
Points : 4
Points : 4
Par défaut Je pencherais plutot pour le CSV

Normalement la base ne contient que les données que tu lui envoient, et en ouvrant le csv avec un programme qui te montre le contenu sans l'interpréter t'arrive pas à voir ce qu'il y avais dedans ?

Oscar
oscar78 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 04h19.


 
 
 
 
Partenaires

Hébergement Web