Forum Notenmanager

Normale Version: Klasse "konnte nicht gespeichert werden"
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

wir haben hier inzwischen erfolgreich die Verbindung zur Postgres-DB geschafft, beim ASV-Import aber hakt's: Keine Klassen! aus dem nmadmin_log.txt geht hervor, dass das wohl was mit einem falschen Zeitstempel ("value out of range") zu tun haben könnte:

[21.09.2016 13:52:29 | SMETTLER]#      Klasse 5A wird neu erstellt#nmiolib.clsASV_Klassenimport#ImportKlasse##ErrorTypeInfo

[21.09.2016 13:52:29 | SMETTLER]#      Fehler: 5A konnte nicht gespeichert werden.#ERROR: 22008: date/time field value out of range: "21.02.2017"#ImportKlasse#nmiolib.clsASV_Klassenimport#ErrorTypeWarnung
[21.09.2016 13:52:29 | SMETTLER]#      Klasse 5B wird neu erstellt#nmiolib.clsASV_Klassenimport#ImportKlasse##ErrorTypeInfo
[21.09.2016 13:52:29 | SMETTLER]#      Fehler: 5B konnte nicht gespeichert werden.#ERROR: 22008: date/time field value out of range: "21.02.2017"#ImportKlasse#nmiolib.clsASV_Klassenimport#ErrorTypeWarnung
[21.09.2016 13:52:29 | SMETTLER]#      Klasse 5C wird neu erstellt#nmiolib.clsASV_Klassenimport#ImportKlasse##ErrorTypeInfo
[21.09.2016 13:52:29 | SMETTLER]#      Fehler: 5C konnte nicht gespeichert werden.#ERROR: 22008: date/time field value out of range: "21.02.2017"#ImportKlasse#nmiolib.clsASV_Klassenimport#ErrorTypeWarnung
[21.09.2016 13:52:29 | SMETTLER]#      Klasse 5D wird neu erstellt#nmiolib.clsASV_Klassenimport#ImportKlasse##ErrorTypeInfo
[21.09.2016 13:52:29 | SMETTLER]#      Fehler: 5D konnte nicht gespeichert werden.#ERROR: 22008: date/time field value out of range: "21.02.2017"#ImportKlasse#nmiolib.clsASV_Klassenimport#ErrorTypeWarnung

(und so weiter für alle Klassen)

Bekanntes Problem mit schneller Lösung oder doch ein unüberwindbares Hindernis?

Dankbar für Tipps,
LG Jörg
Hallo Jörg,


lass mich raten: Linux Server? Hatte ich eben an einer anderen Schule auch. Normalerweise ist es so, dass sich ein Postgres-Server beim "Gebietsschema" (so heißt es unter Windows, bin jetzt zu faul nachzuschauen, wie das unter Linux heißt) nach dem zugrundeliegenden Betriebssytem richtet.

Ist auf dem Server ein deutsches Gebietsschema eingerichtet dann sollte die Funktion "initdb", die normalerweise nach der Installation von Postgres aufgerufen werden sollte, dafür sorgen, dass Postgres das deutsche Datumsformat tt.mm.jjjj versteht. Ist ein englisches Gebietsschema eingestellt (oder initdb wurde nicht ausgeführt), dann erkennt Postgres nur Formate im amerikanischen Format mm/dd/jjjj. Das verursacht jetzt bei euch den Fehler.

Folgende Lösung: suche im Datenverzeichnis von Postgres die Datei postgresql.conf (also z. B. C:\Program Files\PostgreSQL\9.4\data). Dort suchst du nach dem Abschnitt "CLIENT CONNECTION DEFAULTS"

#------------------------------------------------------------------------------
# CLIENT CONNECTION DEFAULTS
#------------------------------------------------------------------------------
# - Statement Behavior -
#search_path = '"$user",public'        # schema names
#default_tablespace = ''        # a tablespace name, '' uses the default
#temp_tablespaces = ''            # a list of tablespace names, '' uses
 
Dort findest du die Zeilen

# - Locale and Formatting -

datestyle = 'iso, mdy'

mdy steht - man kann es erraten - für Month, Day, Year. Ändere das ab in

datestyle = 'iso, dmy'

Jetzt muss die Konfiguration neu geladen werden. Entweder du startest den Postgresql-Dienst neu oder du verbindest dich mit pgAdmin mit der Datenbank, wählst um Menü "Werkzeuge" und dort "Konfiguration neu laden".

Gruß
Stephan
Linux-Server, in der Tat. Bevor wir das jetzt ausprobieren, hat mein Systembetreuer noch die nervöse Frage gestellt, ob man das vorgeschlagene Prozedere einfach so durchführen kann, ohne dass einem dann die ASV aussteigt, deren Datenbank in derselben Postgres-Installation läuft. Was meinst du?

Tausendein Dank,
Jörg
Ein vorsichtiger Admin, immer gut. Nein, kein Problem: auf Windows-Servern läuft die Installation für Postgres mit einem Installer, der das "initdb" gleich mit erledigt. Bei allen Postgresql-Installationen (zwei zuhause, vier an verschiedenen Schulen) war dabei immer automatisch "datestyle ='iso,dmy'" eingestellt. Und auf allen läuft auch zusätzlich und ohne Probleme die ASV.

Das "Neuladen der Konfiguration" würde ich vielleicht zu einem Zeitpunkt machen, wenn kein ASV-Client läuft. Ich glaube zwar nicht, dass es Probleme machen würde. Es geht ja um "CLIENT CONNECTION DEFAULTS", d. h. die Änderungen werden erst wirksam, wenn sich ein Client neu bei Postgres anmeldet. Aber sicher ist sicher.

Gruß
Stephan