IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Changer le LC_CTYPE


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Par défaut Changer le LC_CTYPE
    bonjour,

    je viens d'installer postgresql 8.3 mais je rencontre un probleme lorsque je veux créer une nouvelle base il me retourne :

    ERROR: encoding UTF-8 does not match server's locale fr_FR
    DETAIL: The server's LC_CTYPE setting requires encoding LATIN1

    j'ai modifié potgresql.conf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    client_encoding = utf8          # actually, defaults to database
                                            # encoding
     
    # These settings are initialized by initdb, but they can be changed.
    lc_messages = 'fr_FR.UTF-8'                     # locale for system error message
                                            # strings
    lc_monetary = 'fr_FR.UTF-8'                     # locale for monetary formatting
    lc_numeric = 'fr_FR.UTF-8'                      # locale for number formatting
    lc_time = 'fr_FR.UTF-8'                         # locale for time formatting
     
    # default configuration for text search
    default_text_search_config = 'pg_catalog.french'
    toujours pas!

    lorsque j'execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    postgres=# SHOW client_encoding;
     client_encoding
    -----------------
     utf8
    (1 ligne)
     
    postgres=# SHOW LC_CTYPE;
     lc_ctype
    ----------
     fr_FR
    (1 ligne)
    je ne vois pas comment régler mon problème

    cordialement austriker

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour, tu ne peux plus modifier le LC_TYPE , mais tu peux surcharger un encodage à lal création de ta nouvelle base.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Il faut revenir à l'étape initdb et le lancer avec la locale fr_FR.utf-8, soit par les variables d'environnement LC_*, soit explicitement avec l'option --locale.
    Attention, ça implique l'écrasement des données actuelles.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut
    Bonjour, je viens rebondir sur cette discussion car j'ai rencontré un problème similaire avec PostgreSQL 8.3 sur Debian Lenny amd64. Mon problème est que j'aimerais créer une base en LATIN1 mais garder la possibilité d'avoir des bases en UTF8 plus tard.
    Sur ma Debian, les nouvelles bases de données sont créées par défaut en UTF8, et c'est la création de base en LATIN qui pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    postgres=# CREATE DATABASE testdb WITH ENCODING 'LATIN1';
    ERREUR:  l encodage LATIN1 ne correspond pas à la locale fr_FR.UTF-8 du serveur
    DETAIL:  Le paramètre LC_CTYPE du serveur nécessite l encodage UTF8.
    Alors pour en avoir le coeur net, j'ai fait un test sur un autre poste avec PostgresSQL 8.2 sous Ubuntu 8.04. Ce qui est bizarre, c'est que là je peux créer à la fois des bases en UTF8 (par défaut) et en LATIN1. D'après la doc de PostgreSQL, ce n'est possible que lorsque LC_CTYPE est C ou POSIX ... or quand je regarde LC_CTYPE, que ce soit sur Debian ou sur Ubuntu, voici ce que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    postgres=# SHOW LC_CTYPE;
      lc_ctype   
    -------------
     fr_FR.UTF-8
    (1 ligne)
    Est-ce que cela signifie que le cluster a été initialisé avec l'encodage UTF8 ?

    Et surtout, je me demande bien pourquoi la création de base en LATIN1 fonctionne sur Ubuntu et pas sur Debian ... alors qu'en apparence, Postgre est configuré pareil ...
    Et je ne comprends pas très bien quelle est la relation entre le LC_CTYPE du serveur (quand on tape locale) et celui de Postgre : sont-ils totalement indépendant l'un de l'autre ?

    Merci de m'éclairer, cela me rend très perplexe !!

    Cyril

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Alors pour en avoir le coeur net, j'ai fait un test sur un autre poste avec PostgresSQL 8.2 sous Ubuntu 8.04. Ce qui est bizarre, c'est que là je peux créer à la fois des bases en UTF8 (par défaut) et en LATIN1
    Cette possibilité en 8.2 a été supprimée en 8.3 parce qu'elle conduisait à des erreurs.
    En revanche avec la 8.4 qui vient de sortir on peut créer des bases dans le même cluster avec des locales différentes, c'est ce qu'il te faut si j'ai bien compris.

    Et je ne comprends pas très bien quelle est la relation entre le LC_CTYPE du serveur (quand on tape locale) et celui de Postgre : sont-ils totalement indépendant l'un de l'autre ?
    Il n'y a pas un seul LC_CTYPE dans l'OS, chaque session peut avoir sa propre valeur.
    locale -a donne la liste de toutes les locales installées sur un système et donc potentiellement utilisables. La particularité de postgresql par rapport à d'autres applications est qu'il faut choisir une locale au moment d'initdb et ne plus en changer ensuite à cause du fait que les données stockées en dépendent.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut
    Un grand merci pour ces éclaircissements !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut
    Pour ceux qui aurait des difficultés à créer une base LATIN1 sous Windows, avec PostgreSQL 8.4 (message du type l'encodage LATIN1 ne correspond pas à la locale French_France.1252), il est possible de changer de locale comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    > createdb -U postgres -E LATIN1 -T template0 -l French_France.28591 testdb
    Dans cet exemple 28591 = table de conversion codepage ISO 8859-1 Latin1.
    Autrement :
    1252 = ANSI Latin 1
    65001 = UTF8

    Cyril

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31
  2. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46
  3. Réponses: 2
    Dernier message: 26/06/2002, 13h16
  4. changer de repertoire et situer
    Par chateau dans le forum C
    Réponses: 4
    Dernier message: 24/06/2002, 11h27
  5. changer l'adresse d'un fichier...
    Par cava dans le forum C
    Réponses: 6
    Dernier message: 05/06/2002, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo