Das Package sieht gut aus, aber anscheinend wird das update.sql nicht oder nicht vollständig ausgeführt.
Ich habe den Verdacht, dass die "ALTER TABLE ..."-Statements vom SQL-PIP verschluckt werden.
[edit]
Der Verdacht hat sich bestätigt. Bei einer Testinstallation wurde der erste ALTER-Befehl (DROP PRIMARY KEY) ausgeführt, der zweite (ADD PRIMARY KEY) hingegen nicht, und zwar ohne Fehlermeldung. Resultat: Kein Primärschlüssel definiert. Wie kann das beim Testen übersehen werden??
[edit2]
Ich habe das Problem weiter untersucht. Das Problem tritt auf, wenn es vorher einen Primärschlüssel gab und dieser geändert werden soll. Das SQL-PIP will so schlau sein und ignoriert ein ADD PRIMARY KEY wenn es bereits einen Primärschlüssel gibt. Dieser sollte zwar mit DROP PRIMARY KEY vorher gelöscht werden, doch zu dem Zeitpunkt des Checks existiert er noch, da alle SQL-Statements erst ganz am Ende der Verarbeitung ausgeführt werden.
Die Korrektur ist nicht ganz einfach. Der Aufruf von
WCF::getDB()->getIndices() müsste ein Mal ganz am Anfang stattfinden, und dann müsste das schlaue PIP den Index aus dem Array herausnehmen, wenn es ein DROP PRIMARY findet.
Habe einen
WCF-Bug eingetragen.