Seite 1 von 1

Migration: MSSQL -> MariaDB

Verfasst: Montag 22. Juni 2026, 13:01
von Sven Jordis
Hallo,

Produktiv: SchILD 2 auf MSSQL
Testumgebung: SVWS-Server auf Windows 11.

Problem: Die Migration in die MariaDB startet und bricht an folgender Stelle ab:

* Aktualisiere auf Revision 45
- Verwerfe: 3 Trigger...
t_UPDATE_DavSyncTokenLehrer_LehrerLehramtLehrbef
t_INSERT_DavSyncTokenLehrer_LehrerLehramtLehrbef
t_DELETE_DavSyncTokenLehrer_LehrerLehramtLehrbef
- Verwerfe: 0 Indizes
- Verwerfe: 0 Fremdschlüssel
- Verwerfe: 0 Unique-Constraints
- Erstelle: 3 Tabellen...
LehrerPersonaldatenLehramt
-> Erstelle Trigger für Auto-Inkremente
LehrerPersonaldatenLehramtFachrichtung
-> Erstelle Trigger für Auto-Inkremente
LehrerPersonaldatenLehramtLehrbefaehigung
-> Erstelle Trigger für Auto-Inkremente
- Hinzufügen: 0 Spalten
- Ausführen: 4 Befehle...
1 - LehrerLehramtLehrbef: Korrektur: Setze das Lehramt-Kürzel bei Einträgen, wo dieses nicht gesetzt ist anhand der Lehramts-TabelleERROR
[Fehler]
-> Migration fehlgeschlagen! (Fehler beim Aktualsieren der Ziel-DB)
Fehler bei der Migration (driver='MARIA_DB', location='localhost:3306', user='schild')

Um überhaupt eine lauffähige Testversion zu haben, habe ich mit dem alten Migrationstool die SQL-DB in eine Access-DB migriert und diese in die Maria-DB migriert. Das reicht für den Hausgebrauch, ich kann aber noch nicht absehen, welche Daten dabei auf der Strecke geblieben sind.

Gruß, Sven Jordis

Re: Migration: MSSQL -> MariaDB

Verfasst: Montag 22. Juni 2026, 13:46
von hmt
Steht eventuell in der Tabelle der Lehrbefähigungen etwas, was einen Absturz verursachen kann?

Re: Migration: MSSQL -> MariaDB

Verfasst: Montag 22. Juni 2026, 14:49
von Sven Jordis
Hallo,

ich kann nicht beurteilen, ob die Einträge korrekt sind, aufgefallen ist mir dies:
Bild1.jpg
Bild1.jpg (21.79 KiB) 650 mal betrachtet
Wobei das Anerkennungskürzel den Wert NULL enthalten darf.

Re: Migration: MSSQL -> MariaDB

Verfasst: Montag 22. Juni 2026, 16:12
von WJohannsen
Sven Jordis hat geschrieben: Montag 22. Juni 2026, 13:01 * Aktualisiere auf Revision 45
Welche Version des SVWS-Servers haben Sie installiert? Die aktuelle Version 1.3.1 verwendet die Datenbank-Revision 63...

Re: Migration: MSSQL -> MariaDB

Verfasst: Montag 22. Juni 2026, 16:17
von hmt
WJohannsen hat geschrieben: Montag 22. Juni 2026, 16:12
Sven Jordis hat geschrieben: Montag 22. Juni 2026, 13:01 * Aktualisiere auf Revision 45
Welche Version des SVWS-Servers haben Sie installiert? Die aktuelle Version 1.3.1 verwendet die Datenbank-Revision 63...
Der angezeigte Fehler ist Teil der Migration. Es werden alle Revisionen sukzessive durchgespielt. Das ist soweit ok.

Re: Migration: MSSQL -> MariaDB

Verfasst: Montag 22. Juni 2026, 16:47
von Raffenberg
Hallo,

ich habe gerade eine MDB mit Lehrkräften ohne Anerkennung erfolgreich migriert. Vielleicht reagiert die Migration empfindlich auf Nulleinträge aus der MSSQL.

Probieren Sie deshalb zunächst die MSSQL mit dem Migrationstool für Schild2 auf eine DB zu migrieren. Klappt die Migration? Lässt sich SchILD2 damit starten? Wenn ja, diese für die Migration nach Schild3 nutzen.

Re: Migration: MSSQL -> MariaDB

Verfasst: Dienstag 23. Juni 2026, 18:11
von T.Hagel
Wenn man z.B. Teile der Fehlermeldung ins Suchfeld einträgt und nach „Code“ filtert, gelangt man schnell zu https://github.com/SVWS-NRW/SVWS-Server ... s.java#L37

Bzw. zum Pfad svws-db/src/main/java/de/svws_nrw/db/schema/revisionen/Revision45Updates.java

Dort ab Zeile 37 finden Sie ihre Fehlerbeschreibung und darunter den jeweiligen SQL-Befehl.

UPDATE LehrerLehramtLehrbef d
SET LehramtKrz = (SELECT LehramtKrz FROM LehrerLehramt l GROUP BY l.Lehrer_ID HAVING l.Lehrer_ID = d.Lehrer_ID LIMIT 1)
WHERE TRIM(COALESCE(d.LehramtKrz, '')) = ''
AND (SELECT LehramtKrz FROM LehrerLehramt l GROUP BY l.Lehrer_ID HAVING l.Lehrer_ID = d.Lehrer_ID LIMIT 1) IS NOT NULL



Fehlt da nicht bei der SET-Anweisungnoch noch "d." ? , also:
UPDATE LehrerLehramtLehrbef d
SET d.LehramtKrz = (SELECT LehramtKrz FROM LehrerLehramt l GROUP BY l.Lehrer_ID HAVING l.Lehrer_ID = d.Lehrer_ID LIMIT 1)
WHERE TRIM(COALESCE(d.LehramtKrz, '')) = ''
AND (SELECT LehramtKrz FROM LehrerLehramt l GROUP BY l.Lehrer_ID HAVING l.Lehrer_ID = d.Lehrer_ID LIMIT 1) IS NOT NULL

Re: Migration: MSSQL -> MariaDB

Verfasst: Mittwoch 24. Juni 2026, 08:48
von hmt
Fehlt da nicht bei der SET-Anweisungnoch noch "d." ? , also:
UPDATE LehrerLehramtLehrbef d
SET d.LehramtKrz = (SELECT LehramtKrz FROM LehrerLehramt l GROUP BY l.Lehrer_ID HAVING l.Lehrer_ID = d.Lehrer_ID LIMIT 1)
WHERE TRIM(COALESCE(d.LehramtKrz, '')) = ''
AND (SELECT LehramtKrz FROM LehrerLehramt l GROUP BY l.Lehrer_ID HAVING l.Lehrer_ID = d.Lehrer_ID LIMIT 1) IS NOT NULL
Das würde zu einem Syntaxfehler führen. Die Tabelle ist bereits durch das Update auf ebenjener Tabelle eindeutig definiert.

Re: Migration: MSSQL -> MariaDB

Verfasst: Mittwoch 24. Juni 2026, 10:11
von T.Hagel
hmt hat geschrieben: Mittwoch 24. Juni 2026, 08:48 Das würde zu einem Syntaxfehler führen. Die Tabelle ist bereits durch das Update auf ebenjener Tabelle eindeutig definiert.
Hm. Passiert das dann ggf. nicht beim Fragensteller, wenn die Bedingungen erfüllt sind ?
Bei unseren Testschulen waren die Bedingungen nicht erfüllt, da ging es dann mit Revision 46 weiter.

Ich habe diesen Updatebefehl gerade mal auf unserer Entwicklungs-Datenbank im MS-SQL-Studio ausgeführt und bekomme folgende Rückmeldung:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'd'.
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'LIMIT'.
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near 'LIMIT'.

Der Fehlertooltip wirft hier beim "d" am Ende der Updatezeile aus: "incorrect syntax near 'd'. Expect SET"

Wenn ich dieses "d" entferne und beim Set- und beim Where den Feldern ein "LehrerLehramtLehrbef" voransetze verschwindet der erste Fehler, aber es bleibt bei den Limit-Fehlern.

Ist es nicht eher eine Besonderheit bei MS-SQL, dass man zwar in den Update-Anweisungen mit Aliasen arbeiten kann, aber nicht in der Updateklausel nicht ? Jedoch ... warum sollte ausgerechnet in der Quelldatenbank Daten verändert werden ? Im SchildNRW-Schema lauten die Tabellenfelder doch für die betroffenen Daten ganz anders ? (LehrerPersonalDatenLehramt, z.B.)