Forum Notenmanager
Fehler bei Erstellung der PostgreSQL DB - Druckversion

+- Forum Notenmanager (https://forum.notenmanager.net)
+-- Forum: Schulversion (https://forum.notenmanager.net/forumdisplay.php?fid=22)
+--- Forum: Installation SV (https://forum.notenmanager.net/forumdisplay.php?fid=2)
+--- Thema: Fehler bei Erstellung der PostgreSQL DB (/showthread.php?tid=5979)



Fehler bei Erstellung der PostgreSQL DB - tobiatnet - 07.10.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-cool is incompatible with the collation of the template database (en_US.UTF-cool#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


RE: Fehler bei Erstellung der PostgreSQL DB - tobiatnet - 07.10.2015

Habe den Fehler selbst gefunden, musste eine neue template DB erstellen mit Codierung de_DE.UTF-8


RE: Fehler bei Erstellung der PostgreSQL DB - NM-Himself - 07.10.2015

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


RE: Fehler bei Erstellung der PostgreSQL DB - tobiatnet - 08.10.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


RE: Fehler bei Erstellung der PostgreSQL DB - NM-Himself - 08.10.2015

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