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

#1 22/12/2011 18:44:26

Gugelhupf
Membre

Problème de majuscules et minuscules

Bonjour,

Je suis confronté à un problème qui me paraît étrange (j'utilise PostgreSQL que depuis récemment).

J'ai créé une table comptes (en minuscules) dans lequel j'ai créé les colonnes :
ID_compte, nomUtilisateur, login, motDePasse etc...

Le problème c'est que les colonnes nomUtilisateur et motDePasse ne sont pas reconnus, par contre les colonnes composées uniquement de lettres minuscules ne posent problème (il ne s'agir pas d'un problème d'espace).

Ces deux requêtes fonctionnent :

SELECT * FROM comptes;
SELECT presence FROM comptes;

Mais ceci ne fonctionne pas :

SELECT nomUtilisateur FROM comptes;

Avec l'erreur :

ERREUR:  la colonne « nomUtilisateur » n'existe pas
********** Erreur **********
État SQL :42703

J'ai donc décidé de tout mettre en lettre majuscules, donc la table comptes devient COMPTES mais du coup c'est la table "qui n'existe plus" ! :

ERREUR:  la relation « comptes » n'existe pas
LINE 3: SELECT * FROM COMPTES;
********** Erreur **********
État SQL :42P01

J'ai trouvé un moyen de contourner toutes ces erreurs en mettant entre guillemet le nom des tables et des colonnes, mais je ne trouve pas cela normal.


Comment faudrait-t-il que je fasse réellement ?
Je précise que j'ai installé la version 9.04 de PostgreSQL.

Je vous remercie.

Hors ligne

#2 22/12/2011 19:06:20

rjuju
Administrateur

Re : Problème de majuscules et minuscules

Bonjour.
Le comportement de postgres est de considérer que tout est en minuscule, sauf si vous entourez le nom d'un objet (table, colonne, schéma ...) de double cote.
Par exemle CoMptes est équivalent à comptes, mais "COMPTES" est bien pris en majuscule.

Je pense que vous créez les tables avec l'assistant de création de table de pgAdmin, et celui-ci va automatiquement entourer tous les identifiants de double cote et les rendre sensibles à la casse si vous utilisez des majuscules (pour vous en assurer, vous pouvez aller voir l'onglet SQL avant de valider la création de table).

Pour ne pas vous embêter, vous pouvez créer tous les objets soit avec des noms en minuscule dans pgAdmin, soit avec n'importe quelle casse dans un script sql sans double cote, et ensuite si vous voulez plus de clarté dans vos requête vous pouvez utiliser des majuscule mais sans utiliser de double cote.

Hors ligne

#3 22/12/2011 19:32:55

gleu
Administrateur

Re : Problème de majuscules et minuscules

Pour le dire autrement, si vous n'entourez pas les noms des objets de doubles guillemets, PostgreSQL les convertira automatiquement en minuscule, que ce soit à la création comme à l'utilisation. Par contre, en utilisant les doubles guillemets, vous le forcez à respecter la casse.

Et comme le dit rjuju, pgAdmin ajoute automatiquement les doubles guillemets dans les dialogues de propriétés (création d'une table, ajout d'une colonne, etc.)


Guillaume.

Hors ligne

#4 23/12/2011 01:25:12

Gugelhupf
Membre

Re : Problème de majuscules et minuscules

Bonsoir,

Je vous remercie pour vos réponses, j'aurai du me rendre compte de la sensibilité !
J'avais en effet créé ma table avec l'assistant de création pgAdmin, j'ai tout supprimé et refait à la main.

Bonne soirée !

Hors ligne

Pied de page des forums