SQL-Statements zum finden der nicht-validen Datensätze:
SELECT * FROM svp_schueler_kommunikation WHERE reiter_nr IS NULL SELECT * FROM svp_kommunikation WHERE id IN (SELECT kommunikation_id FROM svp_schueler_kommunikation WHERE reiter_nr IS NULL)
Der Fehler steckt m.E. in der Klasse bayern.asv.interfaces.api.imports.sdandre.importformate.StImporter
. Sie wurde am 14.04.2014 von einem Mitarbeiter der ISB-AG erstellt.
Diese Schnittstelle bricht bis einschließlich ASV-Version 1.29.189 mit einer Exception ab, wenn sie auf einen nicht-validen Datensatz der oben beschriebenen Art trifft. Danach ist sie „gehärtet“ und übergeht diese Datensätze einfach.
Die fehlerhaften Datensätze lassen sich mit diesen SQL-Statements bereinigen:
UPDATE svp_kommunikation SET bemerkung = 'bad' WHERE id IN (SELECT kommunikation_id FROM svp_schueler_kommunikation WHERE reiter_nr IS NULL) DELETE FROM svp_schueler_kommunikation WHERE reiter_nr IS NULL DELETE FROM svp_kommunikation WHERE bemerkung = 'bad'
Zuvor sollte man mit der ISB-AG klären: Sind die nicht-validen Datensätze in svp_schueler_kommunikation eindeutig an reiter_nr == null zu erkennen oder gibt es auch valide Datensätze in svp_schueler_kommunikation mit reiter_nr == null?
Ich kann mir von meinem Verständnis des Datenmodells her zwar letzteres nicht vorstellen, aber da die Semantik des Datenmodells rund um svp_anschrift nirgends umfassend dokumentiert ist, kann ich mir leider nicht sicher sein. Für meine These spricht, dass die Datensätze in der GUI nirgends sichtbar sind…