Forum Notenmanager
Fehler beim Anlegen des neues S - Druckversion

+- Forum Notenmanager (https://forum.notenmanager.net)
+-- Forum: Schulversion (https://forum.notenmanager.net/forumdisplay.php?fid=22)
+--- Forum: Datenaustausch mit WinSV/ASV (https://forum.notenmanager.net/forumdisplay.php?fid=13)
+--- Thema: Fehler beim Anlegen des neues S (/showthread.php?tid=10346)



Fehler beim Anlegen des neues S - tnolan - 13.09.2024

Hallo Stephan,
heute gab es beim Nachimport bei 5 Schülern Fehlermeldungen. ASV und NM (pg) sind aktuell. 

Fehler beim Anlegen des neuen Schülers (Fehler beim Erstellen eines neuen Schülers (ub7pwpid07): Npgsql.PostgresException (0x80004005): 23505: doppelter Schlüsselwert verletzt Unique-Constraint »schueler_pkey«
 
DETAIL: Detail redacted as it may contain sensitive data. Specify 'Include Error Detail' in the connection string to include this information.
   bei Npgsql.Internal.NpgsqlConnector.d__231.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei System.Threading.Tasks.ValueTask`1.get_Result()
   bei Npgsql.NpgsqlDataReader.d__52.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei Npgsql.NpgsqlDataReader.d__52.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Npgsql.NpgsqlDataReader.NextResult()
   bei Npgsql.NpgsqlCommand.d__119.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei Npgsql.NpgsqlCommand.d__119.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Npgsql.NpgsqlCommand.d__107.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Npgsql.NpgsqlCommand.ExecuteNonQuery()
   bei nmClasses.PostGres.Schueler_CreateNew(String sAsvSnr, String sKlasse, Int64& lNmSnr)
  Exception data:
    Severity: FEHLER
    SqlState: 23505
    MessageText: doppelter Schlüsselwert verletzt Unique-Constraint »schueler_pkey«
    Detail: Detail redacted as it may contain sensitive data. Specify 'Include Error Detail' in the connection string to include this information.
    SchemaName: public
    TableName: schueler
    ConstraintName: schueler_pkey
    File: d:\pginstaller_12.auto\postgres.windows-x64\src\backend\access\nbtree\nbtinsert.c
    Line: 570
    Routine: _bt_check_unique)

Hilft dir das?
VG Thomas


RE: Fehler beim Anlegen des neues S - NM-Himself - 13.09.2024

Hallo Thomas,

ich hab nicht alle Schulen/Forumsteilnehmer im Kopf, aber ihr habt doch schon länger Postgresql im Einsatz, oder? Der Fehler dürfte so nicht auftreten.

Für mitlesende und falls es interessiert: auf der Spalte mit der Schüler-ID gibt es einen Index (schueler_pkey), der natürlich eine eindeutige Nummer enthalten muss. Wird ein Schüler neu angelegt, wird die Nummer automatisch vom Datenbankserver hochgezählt. Dieses Hochzählen hat offensichtlich nicht funktioniert, d. h. der Server versucht die neuen Schüler (oder zumindest einen) mit einer ID anzulegen, die es schon gibt.

Zur Lösung: Bitte lass die Datenbank zweimal direkt hintereinander prüfen. Beim ersten Durchlauf sollte NM5 merken, dass der Datenbank-Zähler kleiner ist als die größer Schüler-ID und setzen dann den Zähler hoch. Beim zweiten Durchlauf bereinigt er dann gegebenenfalls noch die Schüler-Tabelle.

Danach sollte der Import dann funktioniert.

Gruß
Stephan


RE: Fehler beim Anlegen des neues S - tnolan - 13.09.2024

Hat geholfen.
Vielen Dank!
Thomas