Ergebnis 1 bis 8 von 8

Thema: createdb -E UTF8 bringt Fehlermeldung *verzweifel*

  1. #1
    loesungsschmied ist offline Neuer Benutzer
    Registriert seit
    19.05.2008
    Beiträge
    6

    Standard createdb -E UTF8 bringt Fehlermeldung *verzweifel*

    Hallo zusammen,

    ich versuche gerade auf einem neu hochgezogenen Server ein paar Datenbanken anzulegen, die ich wie bei uns üblich im Encoding UTF8 brauche:
    createdb cm_usr -E UTF8

    Das hatte bisher auch noch nie Probleme gegeben. Diesmal meckert der Elefant jedoch:
    Code:
    createdb: database creation failed: ERROR:  encoding UTF8 does not match server's locale en_US.ISO-8859-15
    DETAIL:  The server's LC_CTYPE setting requires encoding LATIN9.
    Das vestehe ich insofern nicht, als der Befehl locale an der Kommandozeile folgendes liefert:
    Code:
    LANG=en_US.utf8
    LANGUAGE=en_US.utf8
    LC_CTYPE="en_US.utf8"
    LC_NUMERIC="en_US.utf8"
    LC_TIME="en_US.utf8"
    LC_COLLATE="en_US.utf8"
    LC_MONETARY="en_US.utf8"
    LC_MESSAGES="en_US.utf8"
    LC_PAPER="en_US.utf8"
    LC_NAME="en_US.utf8"
    LC_ADDRESS="en_US.utf8"
    LC_TELEPHONE="en_US.utf8"
    LC_MEASUREMENT="en_US.utf8"
    LC_IDENTIFICATION="en_US.utf8"
    LC_ALL=en_US.utf8
    Sollte doch also kein Problem sein?
    Ich befinde mich auf einem Ubuntu-7.10-System, Postgres läuft in Version 8.3.
    Kann mir jemand irgendetwas dazu sagen? Bin für jeden Hinweis dankbar!

    MfG

    der Lösungsschmied

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Latin9 ist sowieso sehr ungewöhnlich für einen Server in unseren Breiten.

    Was passiert, wenn du dir die Locale als 'postgres' User anzeigen lässt?

    Zum Thema "Locale" habe ich hier noch etwas:

    locales on Ubuntu - ads' corner
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    loesungsschmied ist offline Neuer Benutzer
    Registriert seit
    19.05.2008
    Beiträge
    6

    Standard

    Wenn ich mir als postgres-Benutzer mit locale die aktuelle Locale anzeigen lasse, bekomme ich das hier:
    Code:
    LANG=en_US.utf8
    LANGUAGE=en_US.utf8
    LC_CTYPE="en_US.utf8"
    LC_NUMERIC="en_US.utf8"
    LC_TIME="en_US.utf8"
    LC_COLLATE="en_US.utf8"
    LC_MONETARY="en_US.utf8"
    LC_MESSAGES="en_US.utf8"
    LC_PAPER="en_US.utf8"
    LC_NAME="en_US.utf8"
    LC_ADDRESS="en_US.utf8"
    LC_TELEPHONE="en_US.utf8"
    LC_MEASUREMENT="en_US.utf8"
    LC_IDENTIFICATION="en_US.utf8"
    LC_ALL=en_US.utf8
    Der Befehl locale -a liefert mir folgende verfügbaren Locales:
    Code:
    C
    en_US.iso885915
    en_US.utf8
    POSIX
    Also weit und breit nichts, aber auch garnichts von LATIN9 zu sehen! Wie kommt Postgres dann da drauf?

  4. #4
    dniem ist offline Neuer Benutzer
    Registriert seit
    15.01.2008
    Beiträge
    6

    Standard

    Guten Tag,

    ich hatte oder habe dasselbe Problem. Ich bin nun hingegangen und habe alle Datenbanken gelöscht, indem ich das Verzeichnis /usr/local/pgsql/data gelöscht bzw. umbenannt habe. Dann habe ich initdb --locale=de_DE.UTF-8 durchlaufen lassen und damit die Erstkonfiguration neu angelegt. Mit createdb neue_db -E UTF8 konnte ich dieses mal eine Datenbank mit UTF-8 angelegen.

    Ist es möglich, dass ALLE Datenbanken mit demselben Zeichensatz angelegt werden müssen? Denn soweit ich das sehe kann ich nun keine Datenbanken mehr in einem anderen Zeichensatz anlegen lassen, sondern immer nur mit UTF-8.

    Grüße
    Dirk

  5. #5
    loesungsschmied ist offline Neuer Benutzer
    Registriert seit
    19.05.2008
    Beiträge
    6

    Standard

    Hallo Dirk,

    meiner Ansicht nach wäre das sehr unflexibel von Postgres, wenn alle DBs das selbe Encoding haben müssten.
    Aber der Hinweis von Dir ist trotzdem interessant, ich habe wie von Dir alles gelöscht, neu initialisiert und... leider genau das gleiche.
    Aus irgendeinem Grund ist der Server der Ansicht, LATIN9 ist das einzig wahre Encoding

    Aber trotzdem besten Dank!

    der Loesungsschmied

  6. #6
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    751

    Standard

    Hallo!
    Ich hab gerade das selbe Problem allerdings mit 'latin1' .
    Meine bisherigen Nachforschungen ergaben, das dieses Problem beim Initialisieren des Datenbereichs über die LC_CTYPE-Einstellung gelöst werden kann. Das hieße, pg_dumpall, neu initiallisieren, dump wiedereinspielen. Interessanterweise tritt dieses Problem hier nur bei einem meiner zwei Server auf. Bei ersten (eingerichtet ohne Kenntnis des Problems) tritt es nicht auf, ich kann Datenbanken mit verschiedenen Encodings anlegen, beim anderen tritt es auf, ich kann nur dbs mit UTF-8 anlegen. Wie gesagt soweit die Lösung, die ich bisher gefunden habe. Vielleicht findet sich ja eine Lösung, die mich davor bewahrt, einige GB Geodaten hinundherschubsen zu müssen, deswegen hab ich da noch keine weiteren Infos.

    Gruß Uwe
    Have a lot of fun!

  7. #7
    Data ist offline Neuer Benutzer
    Registriert seit
    17.01.2008
    Beiträge
    20

    Standard

    Zitat Zitat von loesungsschmied Beitrag anzeigen


    Der Befehl locale -a liefert mir folgende verfügbaren Locales:

    Code:
     C
     en_US.iso885915
     en_US.utf8
     POSIX
    Also weit und breit nichts, aber auch garnichts von LATIN9 zu sehen! Wie kommt Postgres dann da drauf?
    ISO 8859-15 'ist' LATIN9. Scheint so, als ob sich initdb die erste nicht C-Locale greift, die eingetragen ist, wenn man nicht den --locale Parameter benutzt.

    Peter

  8. #8
    reto2k9 ist offline Neuer Benutzer
    Registriert seit
    28.12.2009
    Beiträge
    1

    Beitrag Antwort: Verschiedene Enkodierungen im gleichen Cluster

    Grundsätzlich wird das Enkodierungsschema verwendet, das beim Initialisieren angegeben wurde (Angelegte Basis: template1). Es ist aber nicht erforderlich, eine neue Initialisierung durchzuführen. Man kann immer das template0 verwenden, um eine neue Datebank im gleichen Cluster mit anderer Enkodierung anzulegen. Um z.B. zu sehen, was an deutschen Kodierungen verfügbar ist:

    $ locale -a|egrep -i '^de.+ch'

    de_CH
    de_CH.iso88591
    de_CH.utf8
    deutsch

    dann z.B.

    $ createdb -E iso88591 -T template0 --lc-collate=de_CH --lc-ctype='de_CH.iso88591' dein_db_name

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum