TYPO3 Praxis: Korrupte Tabelle "pages" manuell wiederherstellen

image

Die Datenbank-Tabelle “pages” ist zentral für eine TYPO3-Website: Hier werden alle Seiten und ihre Parameter (ID, Seitentyp, Position im Seitenbaum, Berechtigungen etc.) gespeichert. Verschiedene andere Tabellen verweisen auf die Tabelle “pages”. Ist sie nicht mehr verfügbar, so ist das gesamte Frontend der Website lahmgelegt, und im Backend gähnt einem ein leerer Seitenbaum entgegen.

Der folgende Artikel beschreibt, wie man im Notfall die Tabelle “pages” manuell wiederherstellen kann. Die Methode ist nicht besonders kompliziert, aber aufwendig und nur dann zu empfehlen, wenn kein Backup der TYPO3-Datenbank verfügbar ist. Sie setzt ausserdem voraus, dass alle anderen Tabellen der TYPO3-Datenbank inklusive ihre Datensätze noch existieren, namentlich die Tabelle “tt_content”, in welcher der eigentliche Content der Website gespeichert ist.

Der hier beschriebene Notfall ist also ein Spezialfall: Die Chance, dass genau die Tabelle “pages” (und nur diese) korrumpiert wird, ist relativ gering. Trotzdem trat genau dieser Spezialfall bei einer meiner TYPO3-Websites aufgrund eines Schreibfehlers des Datenbank-Servers auf. Und da mein Hosting Provider Hostpoint auch nach 72 Stunden nicht in der Lage war, mir das angeforderte Notfall-Backup einzuspielen, habe ich diese Methode benutzt – vielleicht nützt sie ja jemand anderem in einer ähnlichen Situation ebenfalls.

Schritt 1: Korrupte Tabelle “pages” löschen

Prüfen Sie zuerst, ob die Tabelle “pages” tatsächlich die Ursache Ihres Problems ist. Benutzen Sie hierfür phpMyAdmin (gibt es auch als TYP03 Backend Extension “phpmyadmin”). Wenn Sie damit die Datensätze der Tabelle nicht mehr anzeigen können (und das Phänomen auch nach einer Stunde unverändert ist), dann liegt der Verdacht nahe, dass die Tabelle korrupt ist. Löschen Sie sie in diesem Fall mit phpMyAdmin (DROP TABLE ‘pages’).

Schritt 2: Tabelle “pages” neu anlegen

Um die Tabelle “pages” neu anzulegen brauchen Sie glücklicherweise die Tabellenstruktur nicht manuell zu definieren: Das Modul “Install” im TYPO3-Backend erledigt dies auf Knopfdruck. Gehen Sie zum Abschnitt 2. Database Analyser des Install-Moduls und rufen Sie dort den Befehl Update required tables COMPARE auf. Dadurch überprüft TYPO3, ob die aktuelle Datenbankstruktur korrekt und vollständig ist. Als Ergebnis erhalten Sie einen Bericht, der Ihnen nahelegt, die Tabelle “pages” neu zu erstellen (CREATE TABLE pages…). Klicken Sie den entsprechenden Button, um genau dies zu tun. Anschliessend sollten Sie in phpMyAdmin eine intakte Tabelle “pages” mit 0 Datensätzen vorfinden.

Schritt 3: Seitenbaum rekonstruieren

Die eigentliche Schwierigkeit besteht darin, den Seitenbaum der Website zu rekonstruieren. Entscheidend ist insbesondere, dass diejenigen Seiten, denen Templates zugewiesen wurden, mit der gleichen ID und auf derselben Hierarchiestufe wiederhergestellt werden.

Insbesondere bei einer grösseren/komplexeren Website kann es helfen, wenn Sie zunächst einige zentrale Seiten-IDs recherchieren. Aus der Tabelle “tt_content” können Sie in der Spalte “pid” die grösste existierende Seiten-ID ablesen; so viele Seiten werden Sie später erstellen müssen. Ferner können Sie in der Tabelle “sys_template” ablesen, welchen Seiten-IDs Templates zugewiesen sind; so lange die Seiten mit diesen IDs nicht neu angelegt wurden und an der richtigen Stelle im Seitenbaum stehen, werden Sie im Frontend keine sinnvolle Ausgabe erhalten.

Legen Sie nun im TYPO3-Backend so viele neue Seiten an, bis Sie die oben erwähnte grösste existierende Seiten-ID erreicht haben. Als Seitentitel geben Sie zunächst nur die Seiten-ID ein, alle anderen Felder belassen Sie leer bzw. auf dem Default-Wert. Am schnellsten geht dies über das Modul “Functions”, wo Sie bis zu neun Seiten in einem einzigen Arbeitsgang erzeugen können.

Sobald eine Seite existiert, können Sie im Backend den darin enthaltenen Content sehen. Dies sollte Ihnen helfen, einen sinnvollen Seitentitel zu vergeben und die Seite an die korrekte Stelle im Seitenbaum zu verschieben. Stossen Sie auf Seiten ohne Content, so blenden Sie diese für den Moment aus – löschen Sie sie aber keinesfalls, da es sich um spezielle Seitentypen wie Shortcuts oder SysFolders handeln könnte, die für das Funktionieren der Website essentiell sind.

4 Gedanken zu „TYPO3 Praxis: Korrupte Tabelle "pages" manuell wiederherstellen“

  1. Warum gleich mit der Tür ins Haus fallen, wenn man auch erstmal anklopfen kann?

    bei gestoppten MySQL-Server oder gelockter Tabelle (MyISAM):
    man myisamchk

    ansonsten:
    man mysqlcheck

  2. Auf meinem Shared Hosting Account habe ich nur via phpMyAdmin Zugang zur DB. Und die dort verfügbaren Funktionen “Überprüfe Tabelle”, “Analysiere Tabelle” und “Repariere Tabelle” sind ebenfalls gescheitert beim Versuch, auf die Tabelle zuzugreifen.

  3. Hi!
    Falls die Tabelle gelockt ist, z.B. wegen eines Serverabsturzes, dann kann man im phpMyAdmin folgendes versuchen:


    unlock tables;
    flush table pages;
    repair teble pages;

    Klappt leider nicht immer, aber evtl. kann man sich so das Einspielen eines backups sparen.

    CU
    maxhb

Hinterlassen Sie einen Kommentar