FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint ... - Druckversion +- Forum Notenmanager (https://forum.notenmanager.net) +-- Forum: Schulversion (https://forum.notenmanager.net/forumdisplay.php?fid=22) +--- Forum: PostGreSQL-Datenbank (https://forum.notenmanager.net/forumdisplay.php?fid=42) +--- Thema: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint ... (/showthread.php?tid=5373) |
FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint ... - NM-Himself - 09.10.2014 Liebe Kollegen, an einigen Schulen ist der Umzug der Daten von Access auf die PostGreSQL-Datenbank offensichtlich nicht sauber verlaufen. Dadurch kommt es beim Erstellen von neuen Datensätzen (z. B. bei Ordnungsmaßnahmen, Leistungsnachweisen, Transportmedium, ...) zu dem Fehler Code: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint »...« Erklärung: Alle Tabellen der NM-Datenbank haben einen Primärschlüssel mit einer laufenden Nummer. Die Nummer für den nächsten Datensatz wird dabei durch eine sogenannte "Sequenz" erzeugt, die beim abliefern einer solchen Nummer automatisch eins hochgezählt wird. Somit ist der aktuelle Wert einer solchern Sequenz immer 1 größer als der größte Primärschlüssel. Normalerweise zumindest. Offensichtlich ist die Sequenz bei der Übernahme der Daten aus der Accessdatenbank nicht sauber hochgezählt worden (warum auch immer, muss ich noch mal schauen - geht ja eigentlich automatisch). Dadurch ist jetzt der aktuelle Wert der Sequenz kleiner als größte Primärschlüssel. Wird jetzt ein neuer Datensatz erstellt liefert die Sequenz einen Wert ab, der schon existiert und es wird ein Fehler erzeugt. Lösung: Das Problem kann manuell gelöst werden. Ich erkläre es am Beispiel der Tabelle "lnw" für Leistungsnachweise, es funktioniert aber mit allen anderen Tabellen gleich.
Gruß Stephan RE: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint ... - Hans Peter - 13.10.2014 Hallo Stephan, bei mir werden in der Postgresql-Logdatei folgende Fehler angezeigt. Sind diese problematisch? Oct 13 12:27:22 nm postgres[24949]: [2-1] FEHLER: Typmodifikator ist für Typ »text« nicht erlaubt bei Zeichen 44 Oct 13 12:27:22 nm postgres[24949]: [2-2] ANWEISUNG: ALTER TABLE Sys_Settings ADD HVBackupPath TEXT(250) Oct 13 12:27:23 nm postgres[24949]: [3-1] FEHLER: Zeichenkette in Anführungszeichen nicht abgeschlossen bei »'Br);« bei Zeichen 211 Oct 13 12:27:23 nm postgres[24949]: [3-2] ANWEISUNG: UPDATE noten SET listpos = (SELECT faecher.lfdnr FROM faecher,unterricht WHERE unterricht.index = noten.uindex AND faecher.fachkuerzel = unterricht.fach AND unterricht.klasse <> 'WF' AND unterricht.lehrkraft = 'Br); Oct 13 12:27:23 nm postgres[24949]: [4-1] FEHLER: Typmodifikator ist für Typ »text« nicht erlaubt bei Zeichen 44 Oct 13 12:27:23 nm postgres[24949]: [4-2] ANWEISUNG: ALTER TABLE Sys_Settings ADD HVBackupPath TEXT(250) ______________________________ Ebenso befinden sich in der Log-Datei etliche Meldungen der folgenden Form: Oct 13 10:59:17 nm postgres[24466]: [21-1] FEHLER: ungültige Eingabesyntax für Typ timestamp: »10:59:20« bei Zeichen 113 Oct 13 10:59:17 nm postgres[24466]: [21-2] ANWEISUNG: BEGIN;INSERT INTO notenlog (nnr,datum,uhrzeit,spalte,notenwert,notendaten,nmuser,sync) VALUES (388,'13.10.2014','10:59:20',10,'4','13.10.2014###13.10.2014#10:57:32#1','Ki',False); RE: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint ... - NM-Himself - 14.10.2014 Hallo Peter, nein, nichts davon ist problematisch. Zwei der Fehler beziehen sich auf eine noch nicht veröffentlichte Funktion, der zugehörige Code dürfte bei euch eigentlich gar nicht ausgeführt werden. Der dritte Fehler ist ein SQL-Befehl, der eigentlich nur bei Verwendung einer Access-Datenbank ausgeführt werden sollte. Ich habe beides bereinigt, mit den nächsten Updates (NMSync, NMAdmin, Schulversion heute) verschwinden die Fehlermeldungen. Gruß Stephan |