Beiträge: 3
Themen: 1
Registriert seit: Oct 2015
Hallo,
wenn ich mit dem NMPGSetup Tool die PG Datenbank erzeugen möchte, kommt folgender Fehler im Log:
[07.10.2015 17:17:45 | GDATASRV]#--> Fehler: Datenbank konnte nicht erstellt werden#ERROR: 22023: new collation (de_DE.UTF-
is incompatible with the collation of the template database (en_US.UTF-
#CreateDB#MainWindow#ErrorTypeInfo
Der DB-Benutzer wird fehlerfrei erstellt.
Der PostgreSQL Server ist auf Linux und in Version 9.1.18
Ich habe aber schon mehrere der exakt selben Versionen fehlerfrei installieren können...
Was kann das sein?
vg
Tobias
Beiträge: 3
Themen: 1
Registriert seit: Oct 2015
Habe den Fehler selbst gefunden, musste eine neue template DB erstellen mit Codierung de_DE.UTF-8
Beiträge: 18.379
Themen: 817
Registriert seit: Sep 2003
Hallo Tobias,
jetzt wollte ich gerade einen für Laien verständlichen Workaround schicken, ist ja nun nicht mehr nötig. Und Laie bist du auf diesem Gebiet ganz offensichtlich auch nicht.
Gruß
Stephan
Beiträge: 3
Themen: 1
Registriert seit: Oct 2015
Sollte jemand anders auch das Problem haben, hier eine kurze Step by Step Anleitung.
Ursache ist, dass PostgreSQL auf Englisch installiert wurde und die template Datenbank mit Zeichencode us_US.UTF-8 erstellt wurde. Dies lässt sich nicht ohne Weiteres umstellen.
Abhilfe schafft, eine neue template Datenbank anzulegen, die dann richtig mit de_DE.UTF-8 codiert ist.
Folgendes funktioniert auf einem SuSE Linux System (SLES 11), sollte aber auch bei anderen Distributionen klappen:
------------------------------------------------------
v01:/ # su postgres
postgres@v01:/> psql
psql (9.1.18)
Type "help" for help.
postgres=# update pg_database set datallowconn = TRUE where datname = 'template0';
UPDATE 1
postgres=# \c template0
You are now connected to database "template0".
template0=# update pg_database set datistemplate = FALSE where datname = 'template1';
UPDATE 1
template0=# drop database template1;
DROP DATABASE
template0=# create database template1 with template = template0 encoding = 'UTF-8' LC_CTYPE = 'de_DE.UTF-8' LC_COLLATE = 'de_DE.UTF-8';
CREATE DATABASE
template0=# update pg_database set datistemplate = TRUE where datname = 'template1';
UPDATE 1
template0=# \c template1
You are now connected to database "template1".
template1=# update pg_database set datallowconn = FALSE where datname = 'template0';
UPDATE 1
template1=# \q
postgres@v01:/>
------------------------------------------------------
Danach ist die neue Datenbank "template1" als Template-Datenbank gekennzeichnet und die Umstellung des Notenmanagers sollte kein Problem mehr sein.
vg
Tobias
Beiträge: 18.379
Themen: 817
Registriert seit: Sep 2003
Dann häng ich auch noch etwas dran.
Wenn Postgres eine neue Datenbank erstellt wird standardmäßig template1 als Vorlage herangezogen. Wenn eine "fremdsprachige" Postgres-Installation durchgeführt wurde ist in template1 dann auch ein - für den Notenmanager - unbrauchbare Codierung eingestellt, die aber nicht mehr geändert werden kann.
Variante 1: template1 neu erstelle wie von Tobias oben erklärt.
Unter Umständen ist der Weg aber nicht akzeptabel, weil die Codierung für andere Programme eben genau so gebraucht wird (und neue Datenbanken erstellt werden müssen oder ...). Dann geht
Variante 2:
- NMPGSetup laufen lassen bis zum Programmfehler. Bis dahin wurden dann schon einmal Benutzer und Benutzerrolle angelegt.
- Mit PGAdmin folgenden SQL-Befehl ausführen:
CREATE DATABASE bsnmXXXX With OWNER = nmsvXXXX ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'de_DE.UTF-8' LC_CTYPE = 'de_DE.UTF-8' CONNECTION LIMIT = -1 TEMPLATE template0;
- Dabei muss XXXX durch die vierstellige Schulnummer ersetzt werden. Durch diesen Befehl wird jetzt nicht template1 sondern template0 als Vorlage genommen und dabei ist das Ändern der Codierung dann erlaubt.
- NMPGSetup noch einmal starten und laufen lassen. Wichtig: auf jeden Fall wieder das gleiche Passwort angeben!
- Wenn der Hinweis kommt, dass die Datenbank schon existiert unbedingt mit "Nein" für nicht überschreiben anklicken. Dann wird mit der oben erstellten Datenbank weiter gearbeitet und alles ist gut.
Gruß
Stephan