Postgresql und Kodierung

tatoolz

Active Member
Hallo allesamt.

Ich bin gerade auf FreeBSD 11.1 amd64 dabei, postgresql96 einzurichten.

Folgendes Problem beim ausführen von "# sudo service postgresql initdb":

Die Dateien, die zu diesem Datenbanksystem geh�ren, werden dem Benutzer
�postgres� geh�ren. Diesem Benutzer muss auch der Serverprozess geh�ren.

Der Datenbankcluster wird mit folgenden Locales initialisiert werden:
COLLATE: C
CTYPE: de_DE.ISO8859-15
MESSAGES: de_DE.ISO8859-15
MONETARY: de_DE.ISO8859-15
NUMERIC: de_DE.ISO8859-15
TIME: de_DE.ISO8859-15
initdb: unpassende Kodierungen
Die von Ihnen gew�hlte Kodierung (UTF8) und die von der gew�hlten
Locale verwendete Kodierung (LATIN9) passen nicht zu einander. Das
w�rde in verschiedenen Zeichenkettenfunktionen zu Fehlverhalten
f�hren. Starten Sie initdb erneut und geben Sie entweder keine
Kodierung explizit an oder w�hlen Sie eine passende Kombination.

folgendes sagt "locale":
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_ALL=de_DE.UTF-8

Wo zieht sich hier der postgresql das DE.ISO8859-15?
 
Hmm gute Frage! Aber warum setzt Du nicht die locale beim initieren des DB-Servers?

Beispiel
Code:
initdb --encoding=utf-8 --lc-collate=C --pgdata=/data/db/pgsql --auth-local=md5 --auth-host=md5 --auth=md5 --username=postgres --pwprompt --data-checksums

Code:
postgresql_enable="YES"
postgresql_flags=" --pgdata=/data/db/pgsql"
postgresql_class="postgres"
postgresql_data="/data/db/pgsql"
postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C --pgdata=/data/db/pgsql --auth-local=md5 --auth-host=md5 --auth=md5 --username=postgres --pwprompt --data-checksums"

und in der /etc/login.conf vorher! eintragen und übernehmen

Code:
postgres:\
    :lang=en_US.UTF-8:\
    :setenv=LC_COLLATE=C:\
    :tc=default
[code]
 
Danke für die Info.

wer sollte /data/db/pgsql anlegen?

als normaler User, der in der Gruppe "wheel" ist, kommt Permission denied. Mit "sudo foo" kommt
initdb: kann nicht als root ausgeführt werden
Bitte loggen Sie sich (z.B. mit »su«) als der (unprivilegierte) Benutzer
ein, der Eigentümer des Serverprozesses sein soll.
 
Das ist mir schon klar, nur das Verzeichnis existiert ja nicht.
Und als postgres User kann der Befehl oben ebenfalls nicht ausgeführt werden da die Berechtigungen fehlen
 
Das ist mir schon klar, nur das Verzeichnis existiert ja nicht.
Dann leg es doch mal an. Inkl. der korrekten Berechtigungen.

Wie gesagt. Im Handbuch ist das auch alles beschrieben. Gehe einfach danach vor. Das Handbuch zu ignorieren und hier alles abzufragen ist ein bisschen .... seltsam.
 
Hi

--pgdata=/data/db/pgsql ist optional. Das Verzeichnis /data existiert unter FreeBSD normalerweise auch nicht. Du kannst jedes Verzeichnis angeben wie du es möchtest oder das Standard-Verzeichnis wählen. Egal was du machst, das Verzeichnis sollte dem user:gruppe postgres gehören

oder aber
Code:
man initdb

DIe Option "--data-checksums" lege ich dir ans Herz sofern der Storage wie bei mir auf UFS basiert. Hast du aber ZFS wäre diese Option suboptimal.
 
Zurück
Oben