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 :

problème d'encodage lors de la création d'une base


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut problème d'encodage lors de la création d'une base
    bonjour à tous,

    voilà, j'essaie de créer ma première base de données sous postgresql, et j'ai malheureusement obtenu une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Erreur SQL :
     
    ERREUR:  l'encodage LATIN1 ne correspond pas à la locale fr_FR.UTF-8
    DETAIL:  Le paramètre LC_CTYPE choisi nécessite l'encodage UTF8.
     
    Dans l'instruction :
    CREATE DATABASE "BD_CITY_FRANCE" WITH ENCODING='LATIN1'
    je précise que je suis sur ubuntu 10.10. j'ai cherché des infos sur le net, on parle souvent de LC_CTYPE, cenpendant chaque fois que j'ai été voir, ils avaient tous un avis différent sur chacun des cas déjà abordés...
    j'aimerais savoir ce que je dois faire pour pouvoir encode en LATIN1 sans risquer de détériorer ma configuration svp

    merci !

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    La collation d'une base dépend du jeu de caractères sous-jacent. Linux est en général assez pauvre en matière de jeux de caractères ce qui fait que le choix de la collation est restreint.
    Lisez ceci :
    http://www.developpez.net/forums/d77...nger-lc_ctype/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut
    merci pour le lien, je viens de lire ce topic.

    mais la solution apportée à mon problème concerne postgresql sous windows :
    Pour ceux qui aurait des difficultés à créer une base LATIN1 sous Windows, avec PostgreSQL 8.4
    comment puis-je faire sur ubuntu ?

    je vais voir si je peux installer de nouveaux jeux de caractères.
    je crois que ça dois être possible dans la logithèque.

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 245
    Par défaut
    Bonjour
    Au shell avant d'initialiser le moteur
    Tapez la commande en root (locale)
    vous trouverez des valeurs sur UTF8

    copiez et collez les commandes suivantes au shell

    export LANG="C"
    export LC_CTYPE="C"
    export LC_NUMERIC="C"
    export LC_TIME="C"
    export LC_COLLATE="C"
    export LC_MONETARY="C"
    export LC_MESSAGES="C"
    export LC_PAPER="C"
    export LC_NAME="C"
    export LC_ADDRESS="C"
    export LC_TELEPHONE="C"
    export LC_MEASUREMENT="C"
    export LC_IDENTIFICATION="C"
    export LC_ALL="C"

    locale pour vérifier les nouvelles valeurs

    initialiser le moteur une fois ces valeurs instruites

    (su postgres)
    initdb -D /home/mabase
    etc ....
    Cordialement

  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
    j'aimerais savoir ce que je dois faire pour pouvoir encode en LATIN1 sans risquer de détériorer ma configuration svp
    La solution la plus rapide, sous 8.4+
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create database truc encoding='LATIN1' lc_collate='C' lc_ctype='C' template=template0
    Cette solution est supposée fonctionner directement sans autre manipulation.

    L'inconvénient est qu'en cas de besoin d'une collation française, notamment pour trier avec les règles françaises, la locale 'C' ne remplit pas cette fonction. Si c'est effectivement un problème, il faut que tu détermines quelle est la locale qui convient à ta base avant tout autre chose. Ensuite il faut que tu l'installes sur ton système ubuntu si elle n'y est pas déjà.

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 245
    Par défaut
    Bonsoir
    Cette solution est supposée fonctionner directement sans autre manipulation.
    Oui ... mais ...Le problème c'est que cela ne fonctionne plus avec les 9.+ si initdb
    n'est pas exécuté en (LC_) 'C'.

    (.........la locale 'C' ne remplit pas cette fonction.)
    Non pas exactement ....
    Si votre moteur est initialisé "C" , vous avez par la suite la possibilité de créer
    plusieurs bases sous différents (encodages) (9.+)
    Il suffit d'aligner les paramètres de chaque base via leurs fichiers (postgresl.conf)
    respectifs. (plusieurs instances)
    Vous avez du Latin et de Utf8 ou autres possible via un moteur unique.

    Je pense que pour les bases en sous-instances avec 'C' une pluralité d'encodages
    doit être gérée dans la commande de création (9+)
    Je vais faire le test si j'ai un moteur 9 sous la main...

    SQLpro.

    Je ne vois pas de lien avec une pseudo pauvreté de fontes Linux ???
    En mode UTF8 certains caractères ne sont pas gérés correctement par Postgresql
    Linux n'est pas en cause.
    Cordialement

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

Discussions similaires

  1. Problème lors de la création d'une base de données
    Par dr.zed dans le forum Administration
    Réponses: 3
    Dernier message: 04/04/2011, 12h45
  2. Probléme lors de la création d'une base à vide
    Par IronManOracle dans le forum Oracle
    Réponses: 1
    Dernier message: 25/08/2010, 15h02
  3. problème d'encodage lors de la création d'une base
    Par thor76160 dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 29/01/2010, 19h47
  4. Problème de charset lors de la création d'une instance 8i
    Par girint dans le forum Administration
    Réponses: 2
    Dernier message: 15/06/2007, 13h50
  5. Réponses: 8
    Dernier message: 06/06/2007, 17h03

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