Das Örtchen RSS-Feed
Kategorie
Kategorie: Blog
Buttons & Statistiken
Neueste Kommentare

Drupal 8: Fehlende Inhalte nach Update auf Drupal 8.3.7

Vor einiger Zeit Stand das Sicherheitsupdate 8.3.7 für dieses Blog an und erwies sich leider als ziemlich problematisch. Beim ersten Versuch zeigte meine Website danach keinerlei Inhalte mehr an und auch beim Bearbeiten war das Body-Feld aller getesteten Seiten komplett leer. Deswegen möchte ich hier einmal meine Vorgehensweise bei der Problemlösung (auch als Gedächtnisstütze für mich selbst) verbloggen.

Vor dem Drupal-Update hatte ich zunächst die aktuellste Release-Version von Backup and Migrate (also 8.x-4.0-beta3) installiert und damit eine Vollbackup erstellt und dieses runtergeladen. Ein Vollbackup sollte man grundsätzlich vor jedem Update machen, damit man bei Problemen notfalls den alten Stand wiederherstellen kann. Den alten Stand wollte ich jedoch nicht beibehalten, schließlich ging es hier um eine Sicherheitsupdate.

Ich hatte ein manuelles Update mittels FTP vorgenommen, wie es unter in der Drupal-Dokumentation beschrieben wird, da ich das Blog auf normalen Webspace betreibe und keinen Zugriff auf die Kommandozeile habe. Ein Datenbank-Update über die update.php war nicht nötig, was bei Patch-Level-Updates des Cores ja auch meist der Fall ist. Nach diesem ersten Versuch bin ich dummerweise direkt auf /admin/reports/status (also den Statusbericht) gegangen und kann somit nicht sagen, ob zu diesem Zeitpunkt noch Inhalte vorhanden waren. Dort kam jedenfalls die folgende Meldung:

Nicht übereinstimmende Entitäts- und/oder Felddefinitionen.
Der Entitätstyp Key Configuration Override muss installiert werden.

Normalerweise verwendet man bei Drupal 8 in einem solchen Fall Drush und den Kommandozeilen-Befehl drush entity-updates. Im Blog-Beitrag Drupal 8: Mismatched entity and/or field definitions wird jedoch eine alternative Vorgehensweise beschrieben, wo man temporär Code über der Anweisung $response->send() in der index.php ergänzt und danach die index.php aufruft (also beispielsweise eine beliebige Drupal-Seite).

try {
  \Drupal::entityDefinitionUpdateManager()->applyUpdates();
}
catch (EntityStorageException $e) {
  print_r($e);
}

Diese Variante habe ich dann getestet und stand danach, wie schon erwähnt, mit einem Blog ohne Inhalte da. Die Fehlermeldung wurde jedoch tatsächlich behoben.

Also einen Schritt zurück: Änderung in der index.php rückgängig machen, Datenbank-Backup einspielen und die Startseite aufrufen. Danach waren die Inhalte wieder vorhanden. Aber die Fehlermeldung im Statusbericht war natürlich auch wieder da. Also erneut die index.php angepasst. Dieses mal habe ich jedoch die eigentliche Anzeige der aufgerufenen Seite mittels die() verhindert.

try {
  \Drupal::entityDefinitionUpdateManager()->applyUpdates();
}
catch (EntityStorageException $e) {
  print_r($e);
}

die();

Danach habe ich die index.php sicherheitshalber zwei Mal aufgerufenen und zwischen beiden Aufrufen etwas Zeit für die Anpassung der Definitionen gelassen. Danach habe ich den Code aus der index.php wieder entfernt und die Startseite aufgerufen. Dieses Mal waren alle Inhalte noch da und die Fehlermeldung im Statusbericht beseitigt.

Fazit

Wo im ersten Anlauf genau das Problem war, kann ich leider nicht sagen. Das Beispiel zeigt jedoch wieder einmal, daß selbst bei Patch-Level-Updates ein vorheriges Backup sinnvoll ist. Insgesamt kommt es mir sowieso so vor, daß Drupal 8 wesentlich anfälliger für Update-Probleme ist, als ich das von früheren Versionen und insbesondere Drupal 6 gewohnt bin.

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Neuen Kommentar schreiben

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als rel="nofollow" markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne HTML-Tag in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.