Eine kurze Notiz, falls jemand der Releaseverkündung von RoundcubeMail 0.4 (einer sehr guten Webmail-Oberfläche) folgt und „interessante“ Probleme nach dem Update hat. Zum Beispiel keine Gruppen im Adressbuch definieren oder keine neuen Kontakte hinzufügen kann.
Im Logfile sieht das dann zum Beispiel so aus:
[Native message: Cannot add or update a child row: a foreign key constraint fails (`rcmail/contactgroupmembers`, CONSTRAINT `contact_id_fk_contacts` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE)]
Das Problem ist anscheinen schon etwas länger bekannt und im Ticket #1486794 dokumentiert. Allerdings wurden die Erkenntnisse leider nicht in das Updateskript mit aufgenommen und ist es Wahrscheinlichkeit, dass man bei einem Upgrade aufgrund verschiedener Tabellenformate in der Datenbank auf Schwierigkeiten stößt. Da man Roundcube evtl. schon seit einer Weile einsetzt möchte man natürlich nicht seine ganz Datenbank frisch initialisieren (zumal einem dann vermutlich einige User wegen verlorener Adressbücher aufs Dach steigen würden).
Sollten sich also der Verdacht bestätigen und man Tabellen verschiedener Formate in der Roundcube Datenbank vorfinden (wie das z.B. im PhpMyAdmin aussieht zeigt der Screenshot), kann man das Problem anscheinend damit lösen, dass man alle Tabellen zu InnoDB umwandelt. Dafür muss man für jede Tabelle ein „ALTER TABLE“ Befehl absetzen, so dass dies im Ergebnis dann zum Beispiel so aussehen kann (vor Copy/Paste Backup nicht vergessen und prüfen, ob’s wirklich für die eigene DB passt):
ALTER TABLE `cache` ENGINE=InnoDB; ALTER TABLE `session` ENGINE=InnoDB; ALTER TABLE `messages` ENGINE=InnoDB; ALTER TABLE `users` ENGINE=InnoDB; ALTER TABLE `contacts` ENGINE=InnoDB; ALTER TABLE `identities` ENGINE=InnoDB;
Die Erklärung dafür findet sich z.B. in der MySQL Dokumentation, die ganz klar sagt
Beide Tabellen müssen InnoDB-Tabellen sein und dürfen keine TEMPORARY-Tabellen sein.
Und deshalb hat man sich bei Roundcube kurzerhand dafür entschieden, alle Tabellen zu InnoDB-Tabellen zu machen.
Also kurz die Tabellen angepasst, schon funktioniert auch die wunderbare Gruppenfunktionalität im Adressbuch des Roundcube Webmail
Getestet und eingesetzt auf Ubuntu 9.10 und 10.04 mit MySQL 5 und PHP 5.3.
Viel Erfolg beim Upgrade und viel Spaß noch mit Roundcube