Extensionmanager: Fatal error: Call to a member function getUid() on a non-object

Gestern war es wieder einmal so weit: leises Fluchen war zu hören. Grund hierfür war, dass der Extensionmanager einer frischen TYPO3-Installation keine Extension installieren wollte, sondern seinen Dienst mit einer Fehlermeldung abbrach:

Fatal error: Call to a member function getUid() on a non-object in /var/www/test/typo3/6.1.5/typo3/sysext/extensionmanager/Classes/Utility/Repository/Helper.php on line 251

Recht schnell war verständlich, dass hier auf ein nicht vorhandenes Repository versucht wird zuzugreifen. Aber warum? Bei einer frischen Installation sollte das doch funktionieren? Und es tut doch normal auch… Wir wollten es wissen. Was geht hier (manchmal) schief?

Wir setzten schnell eine frische Test-Installation auf – alles passt. Dann gab so eine Idee: „Ach, ähm, ich musste die Datenbankstruktur gestern nochmal neu anlegen“. Also löschten wir alle Tabellen aus der Datenbank und legten diese via Install Tool -> Database Analyser -> COMPARE neu an. Und siehe da, der Extensionmanager versagt seinen Dienst mit obiger Meldung 🙂

Was ist der Hintergrund?

Der Extensionmanager bringt (derzeit) nur einen einzigen Eintrag eines Repositories mit, welcher bei der Installation in die frisch angelegte Tabelle tx_extensionmanager_domain_model_repository geschrieben wird. Dies geschieht mittels der Datei ext_tables_static+adt.sql während der Installation einer Extension (TYPO3 Core API), d.h. hier während der Installation des Extensionmanagers innerhalb der Gesamt-Installationsroutine.

Wird nun die Datenbank nochmal gelöscht und eine neue angelegt (z.B. weil man sich in den Charsets vertan hatte :-\), ist der übliche Weg, via DB Compare die Datenbankstruktur wiederherzustellen. Bei diesem Vergleich wird jedoch nur auf die Struktur der Datenbank geachtet, d.h. verglichen, ob die derzeit konfigurierte Datenbank mit der in den ext_tables.sql-Dateien definierten Struktur übereinstimmt – Inhalte/Daten werden dabei nicht verglichen.

Lösung

  1. Die TYPO3-Umgebung von Anfang an richtig aufsetzen, d.h. die Datenbank nicht nach der Installation wieder löschen 😉
  2. Die Extension, der Daten fehlen, deinstallieren und erneut installieren. Damit würden die Daten importierbar sein. (EXT:extensionmanager als System-Extension ist jedoch nicht deinstallierbar, daher fällt diese Option im konkreten Fall weg)
  3. Den Update-Wizard des Installtools durchlaufen. Dieser prüft nämlich, ob auch die Inhalte da sind und bietet das Ergänzen der Tabelleninhalte an.
  4. In die Datei ext_tables_static+adt.sql im Extensionordner schauen, und die dort stehenden INSERTs manuell ausführen

 

Quellen

  • TYPO3 Bug #52859: Extension Manager / Get Extensions / Fatal error: Call to a member function getUid() on a non-object / missing object $this->repository

2 Antworten to “Extensionmanager: Fatal error: Call to a member function getUid() on a non-object”

  1. avatar

    Danke dir für den Post!!!

  2. avatar

    Auch wenn dieser Eintrag schon fast ein Jahr alt ist, aber Lösung 3 hat mich gerettet. Vielen Dank!

Schreibe einen Kommentar