PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 30/07/2021 12:11:30

samirca007
Membre

probléme minscul majscul create database

hello ,

j'ai un problème que j'ai passer des jours pour le comprendre mais sans résultat

en faite moi j'ai crée ma base de donnée avec un lettre B en majiscule

postgres=# create database Base_dev ;
CREATE DATABASE

mais si j'affiche les liste de mes bases j'ai ma  base de donnée mais avec une lettre miniscul

postgres=# \l
                                      Liste des bases de donnÚes
    Nom    | PropriÚtaire | Encodage |  Collationnement   |    Type caract.    |    Droits d'accÞs
-----------+--------------+----------+--------------------+--------------------+-----------------------
 base_dev  | postgres     | UTF8     | French_France.1252 | French_France.1252 |
 postgres  | postgres     | UTF8     | French_France.1252 | French_France.1252 |
 template0 | postgres     | UTF8     | French_France.1252 | French_France.1252 | =c/postgres          +
           |              |          |                    |                    | postgres=CTc/postgres
 template1 | postgres     | UTF8     | French_France.1252 | French_France.1252 | =c/postgres          +
           |              |          |                    |                    | postgres=CTc/postgres
 test      | postgres     | UTF8     | French_France.1252 | French_France.1252 |
(5 lignes)

ceci rendre l'option du mon restore impossible vu qu'il ne trouve plus la base en question

>psql -U postgres -p5433 -d postgres -f  c:\dump\base-dev.sql
Mot de passe pour l'utilisateur postgres :
SET
SET
SET
SET
SET
 set_config
------------

(1 ligne)


SET
SET
SET
SET
psql:c:/dump/base-dev.sql:23: ERREUR:  option « locale » non reconnu
LIGNE 1 : ..._dev" WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE = '...
                                                               ^
psql:c:/dump/base-dev.sql:26: ERREUR:  la base de données « Base_dev » n'existe pas
psql:c:/dump/base-dev.sql:28: erreur : \connect : FATAL:  la base de données « Base_dev » n'existe pas

merci pour vos retour d'experience

Hors ligne

#2 30/07/2021 13:02:13

jmarsac
Membre

Re : probléme minscul majscul create database

Bonjour,

PostgreSQL convertit tous les noms d'objets en minuscules à moins que ceux-ci ne soient entourés de guillemets doubles (") à leur création.

Pour de bonnes pratiques en la matière, je vous conseille de suivre les recommandations publiées par Dalibo : (https://public.dalibo.com/exports/marke … greSQL.pdf) qu'il faut encore remercier pour toutes leurs contributions et publications

Hors ligne

#3 30/07/2021 13:20:07

dverite
Membre

Re : probléme minscul majscul create database

psql:c:/dump/base-dev.sql:23: ERREUR:  option « locale » non reconnu
LIGNE 1 : ..._dev" WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE = '...

L'option LOCALE=... de CREATE DATABASE n'existe qu'à partir de PostgreSQL 13. Pour les versions d'avant il faut forcément détailler LC_COLLATE et LC_CTYPE séparement.


Ici l'option n'est pas reconnue parce que c'est un dump qui a été généré pour PostgreSQL 13 ou supérieur (donc par un pg_dump récent) mais  qui est joué sur PostgreSQL 12 ou inférieur.


Donc la création de la base échoue, et le \connect qui suit échoue aussi. C'est complètement indépendant du fait qu'il faut mettre les noms entre guillemets si vous voulez conserver les majuscules comme indiqué par Jean-Marie dans la réponse #2. Votre script c:\dump\base-dev.sql, lui, a bien les noms entre guillemets d'après ce qu'on peut voir des messages d'erreur.

Hors ligne

Pied de page des forums