beim Setup für Upgrades von älteren 4.8.20 auf 4.10 kann im Setuplog ein Fehler auftauchen, dass es misslungen sei, in der Tabelle con_system_prop die Spalte idsystemprop in Autoincrement umzuwandeln. Dadurch ist das Upgrade "gescheitert".
Code: Alles auswählen
ALTER TABLE `con_system_prop` CHANGE `idsystemprop` `idsystemprop` INT(11) NOT NULL AUTO_INCREMENT
Mysql Error: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY' (1062)
Abgesehen davon, bei Autoincrement kann es sowieso keinen Default Wert geben, weil automatisch von 1 hochgezählt wird..
Alter Table Autoincrement versucht nun, aus der 0 eine 1 zu machen, aber die 1 ist ja auch bereits belegt, woraus oben genannte Fehlermeldung entsteht.
Praktisch müsste man die Tabelle erst in eine Zwischentabelle umsortieren, die bei 1 anfängt zu zählen und dann zurück importieren.
Kann man machen, wenn man will und Zeit hat oder muss, und hier findet sich auch mehr Info zu dem Problem:
https://stackoverflow.com/questions/540 ... -increment
Kurz und schmerzlos geht es bei dieser Tabelle aber auch so, dass man den Tabelleneintrag mit 0 einfach mittels phpmyadmin auf die nächste Nummer umschreibt, die gerade frei ist. Bei mir war es 24, weil da scheints mal was gelöscht wurde.
Das ist bei dieser Tabelle so einfach, weil die ID keine Rolle spielt, sondern die Spalte 'type'.
Bei Tabellen, wo die Reihenfolge und ID eine Rolle spielen, muss man sorgfältig umsortieren, um die 0 weg zu bekommen.
Leider entstehen aus oben genanntem Fehler auch Folgefehler wie diese:
Code: Alles auswählen
INSERT INTO `con_system_prop` SET `type` = 'system', `name` = 'mail_transport', `value` = 'smtp'
Mysql Error: Duplicate entry '0' for key 'PRIMARY' (1062)
Bei wenigen SQLs geht das noch von Hand. Aber Achtung, hier wird nicht mehr nach duplicate entry geprüft, weil die Spalten type und name als normaler Index eingetragen sind, aber nicht als unique. Folglich kann es mehrere gleiche Einträge geben, da nur die ID unique ist und diese mit autoincrement einfach hochgezählt wird.
Und siehe da, wenn ich nach dem index sortiere, finde ich schon zwei identische Einträge.
system insite_editing_activated true
Das gibt es bei mir mit ID 21 und 29.
Für das Setup in Contenido wäre zu empfehlen, dass es an dieser Stelle zuerst prüft, ob es einen Eintrag mit ID=0 gibt.
Der Default Wert 0 muss weg und der Eintrag mit der nächst möglichen Nummer versehen werden oder aber die Tabelle umsortiert werden, bevor ALTER TABLE AUTOINCREMENT ausgeführt wird.
Warum?
Weil das Setup an dieser Stelle versagt und weniger Datenbank affine User dann vor einem unvollendeten Setup stehen.