Loading

Feng Office und das Update auf die Version 2.3.1.1

Posted in Sidetopics on October 4th, 2013
Tags: , ,

Wer FengOffice verwendet wie ich, regelmäßig die Aktualisierungen durchführt, der stößt schon mal auf ein Problem. In vielen Fällen lassen sich diese Probleme dann mit Hilfe des FengOffice-Forums oder anderer Internet-Blogger lösen. Beim aktuellen Update auf 2.3.1.1 (das betrifft aber auch ein Upgrade auf die ganz aktuelle Version 2.3.2.1) ist das leider nicht der Fall. Ich habe in diesem Fall ganz normal den Upgrade über mein automatisiertes Script ausgeführt, wie jedes mal.

Doch jetzt war dann doch etwas anders. In der FengOffice-Oberfläche war der Overview-Tab nicht mehr zu erreichen und beim Bearbeiten von Objekten jeder Art wurde immer wieder der folgende Fehler angezeigt:

Unknown column ‘member_id’ in ‘field_list’

Gut dachte ich mir. Da ist wahrscheinlich etwas beim Upgrade nicht fertig geworden oder schief gelaufen. Also hab ich einfach versucht, den Upgrade-Prozess noch einmal manuell durchzuführen. Dass könnt Ihr über 2 Wege machen.

  1. Geht im Browser auf http://eureFengDomain/public/upgrade/ und führt das das Upgrade über den Knopf dort nochmal aus.
  2. Geht über die Commandozeile auf euren Webspace und dort in das Home-Verzeichniss der Feng-Installation. Dann führt Ihr folgendes aus:

php public/upgrade/console.php eureJetzigeVersion 2.3.2.1

Das half leider beides nichts. Ok, es werden auch über beide Wege die gleichen Scripte angestoßen, von daher ist es schon logisch, dass beide Wege nicht funktionieren. Der Upgrade-Versuch wird mit der folgenden Fehlermeldung quitiert:

Error: Failed to execute DB schema transformations. MySQL said: Duplicate entry ‘mail’ for key ‘name’
Error upgrading to version 2.3.2.1

Woher kommt der Fehler?

Der Fehler kommt, daher dass das Datenbankschema von Feng bei diesem Upgrade an einer entscheidenden Stelle geändert wurde. Ein Feld, das vorher nicht Eindeutig (Unique) war wurde mit dem neuen Schema Unique gemacht. Nach ein wenig Recherche im Quellcode und etwas Debugging bin ich dann auf die Folgende Abfrage gestoßen:

ALTER TABLE `PREFIX_object_types` DROP INDEX `name`,
ADD UNIQUE INDEX `name` USING BTREE(`name`);

Also wie ich oben beschrieben habe. In der Tabelle object_types wird das Feld ‘name’ eindeutig gemacht, damit dort nicht mehrere Objekte mit dem selben Namen drin stehen können.

Und was ist jetzt das Problem?

Da es vorher durchaus möglich war, dass die Tabelle 2 Datensätze mit dem gleichen Namen befinden, hat sich bei meiner Installation ein solcher Datensatz eingeschlichen. Fragt mich bitte jetzt nicht woher der Datensatz kam, aber bei mir war der folgende Datensatz doppelt (bzw. gab es 2 Datensätze mit dem gleichen Namen):

id: 21
name: mail
handler_class: MailContents
table_name: mail_contents
type: content_object
icon: mail
plugin_id: 4

Der Zweite hatte natürlich eine andere id, war aber sonst völlig identisch.

Was tun?

Das ist eigentlich ganz einfach. Einer dieser Datensätze muss rausfliegen. Am besten nehmt Ihr dazu den Datensatz mit der höheren id. Geht also einfach in eure Feng-Datenbank, sucht euch dort die Tabelle mit dem Namen (EuergewählterPrefix)_object_types raus und lasst euch die Datensätze anzeigen:

select * from (EuergewählterPrefix)_object_types;

Jetzt sucht Ihr nach 2 Datensätzen bei denen das Feld ‘name’ jeweils gleich gefüllt ist und merkt Euch die höhere id. Diesen Datensatz löscht Ihr dann mit

delete from (EuergewählterPrefix)_object_types where id = 22;

Falls Ihr mehrere solcher doppelten Datensätze findet macht Ihr mit denen genau das gleiche. Solange bis jeder Name nur noch einmal in der Tabelle steht.

Wenn Ihr dass geschafft habt, steht einem erfolgreichen Upgrade nichts mehr im Weg. Ihr könnt jetzt wie am Anfang des Artikels erklärt einfach den Upgrade wie von FengOffice vorgesehen durchführen.

Also dann: Viel Spaß mit Feng!

[ Leave A Comment »]
Blogverzeichnis - Blog Verzeichnis bloggerei.de Blogverzeichnis