• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Postgresql und Kodierung

tatoolz

Active Member
Themenstarter #1
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?
 

minimike

Berufsrevolutionär
#2
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]
 

tatoolz

Active Member
Themenstarter #3
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.
 

tatoolz

Active Member
Themenstarter #5
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
 

minimike

Berufsrevolutionär
#7
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.