MacBook Banner 728x90
< Migration eines bestehenden TYPO3 Projekts nach Dam

Bedeutung von "NO entry in the $TCA-array for the table "tt_content"...

30.05.2010
Lina Wolf
invalid TCA in Database Analyser des Installtool

Die Bedeutung von enableFields-Fehlermeldung:

NO entry in the $TCA-array for the table "tt_content". This means that the function enableFields() is called with an invalid table name as argument. 

Immer wieder tritt in der TYPO3-Entwicklung obige Fehlermeldung auf. In der Regel passiert dies, wenn man nach dem Löschen des Caches die Seite zu schnell anzeigen wollte. Lösung: nach dem Löschen des caches länger warten oder eine schnelle Cache-Löschextension wie truncate tables nutzen.

In einigen Fällen tritt aber auch eine solche Fehlermeldung auf und möchte nicht wieder verschwinden:

NO entry in the $TCA-array for the table "t3blog". This means that the function enableFields() is called with an invalid table name as argument.  

Dies deutet in der Regel darauf hin, dass in der TCA eine Tabelle konfiguriert wurde, die nicht mehr vorhanden ist.

Um dieses Problem genauer zu untersuchen, geht man ins Installtool in den Database Analyser undklickt auf "Compare with $TCA".

Im Fehlerfall werden dort Tabellen aufgelistet, die zwar eine TCA Definition, aber keine zugehörigen Tabellen haben. Entfernt man diese TCA Definitionen, funktioniert wieder alles. Nur wie entfernt man sie?

Ungültiges TCA entfernen

Zunächst einmal in der Datei typo3conf/extTables.php nachschauen, ob dort etwas der Form $TCA['fehlerhafteTabelle'] zu finden ist. Wenn ja diese Definitionen auskommentieren oder löschen. Andernfalls liegt der TCA-Code wahrscheinlich in einer Extension und zwar jeweils entweder in deren Datei typo3con/ext/extension_name/ext_tables.php  oder typo3con/ext/extension_name/tca.php

Nun alle Extensions überprüfen, die von der genannten Tabelle abhängen könnten oder selbst programmiert wurden.

Im schlimmsten Fall, wenn man die TCA Definition gar nicht findet, kann man mit
unset($TCA['fehlerhafteTabelle']); ganz am Ende der Datei typo3conf/extTables.php  diese Definition zurücksetzen. Dies sollte man aber gut dokumentieren sonst wundert man sich, wenn sich die entsprechende Extension zukünftig nicht mehr installieren kann.

Cordes

Gravatar: Nicole Cordes
Hallo,

zu diesem Problem haben wir heute die Lösung gefunden. Das Problem besteht darin, dass das Löschen der Cache-Dateien durch ein AJAX-Script abläuft, zeitgleich aber auch durch einen User das Frontend geladen werden kann. Der include der Cache_ext_tables.php erfolgt ziemlich spät im Prozess, so dass am Anfang bei der Überprüfung der temp_*_ext_tables.php die Dateien noch exisitiert, dann wird sie über den AJAX-Zugriff aus dem Backend gelöscht und kann nicht mehr geladen werden. Dadurch fehlen die notwendigen TCA-Konfigurationen.

Die Lösung: Bevor die Datei inkludiert werden soll, wird nochmals überprüft, ob sie vorhanden ist.

Patch ist im TYPO3-forge unter http://forge.typo3.org/issues/22928 zu finden.

Liebe Grüße,
Nicole, CPS-IT GmbH

Kommentar hinzufügen

* - Pflichtfeld

*




*