Gdy Drupal 8 wysypie się podczas aktualizacji rdzenia

Błąd na stronie internetowej

Uciążliwe, ale stabilne początki CMS Drupal w wersji 8

Strony internetowe na bazie CMS Drupal 8, zacząłem stawiać już po kilku dniach od premiery wersji 8.0.0., która była pierwszym wspieranym wydaniem Drupala 8, którą można było wykorzystać do budowy stron w wersji produkcyjnej. Niestety w pierwszych miesiącach po premierze tej wersji systemu wyszła ogromna ilość aktualizacji rdzenia CMS, jak i jego modułów. Poprawki do Drupala 8 pojawiały się nawet kilka razy w miesiącu, a ich aplikowanie na uruchomionych już stronach stało się dość uciążliwe, jednakże na szczęście, update przebiegał bezkonfliktowo. Niestety stabilny proces aktualizacji miał miejsce do pewnego czasu.

Crash Drupala 8 podczas aktualizacji do wersji 8.4.0

Problem z aktualizacją stron postawionych na D8 pojawił się wraz z wydaniem wersji 8.4.0. w październiku 2017 roku. Komplikacje objawiały się błędem podczas uaktualnienia rdzenia systemu, dotyczyły modułu systemowego i były związane z Update #8400

Failed: Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'revision_created' at row 1: UPDATE {block_content_revision} SET revision_created=:db_update_placeholder_0 WHERE revision_id = :db_condition_placeholder_0; Array ( [:db_update_placeholder_0] => [:db_condition_placeholder_0] => 6 ) in system_update_8400() (line 1942 of /var/www/html/core/modules/system/system.install).

W efekcie, aktualizowana storna internetowa była całkowicie niedostępna (panel administracyjny również), przy próbie wywołania wyświetlał się komunikat o błędach, zaczynający się sformułowaniem:

Wystąpił niespodziewany błąd. Proszę spróbować później. ...

 

Naprawa Drupala 8 pozwalająca na update do wersji 8.4.0

W pierwszym kroku, bez zastanowienia podjąłem próbę wyczyszczenia cache systemu z poziomu serwera, za pomocą polecenia:

drush cache-rebuild

Niestety zabiegi związane z czyszczeniem cache na nic się nie zdały, problem leżał gdzieś indziej.

Po zapisaniu informacji o błędach i przywróceniu strony z backupu, na spokojnie analizując problem, wywnioskowałem, że dotyczy on rozszerzenia Drupala, pozwalającego na tworzenie własnych bloków, czyli Custom Block. Okazało się, że konflikt powodują pozostałości w bazie danych, po usuniętych blokach własnych. Jedynym ratunkiem było wyczyszczenie tych powiązań. Operację taką można wykonać z poziomu CMS, wchodząc w /admin/modules/uninstall Tam na liście rozszerzeń znalazłem moduł Custom Block, gdzie w opisie widniał zapis:

Następująca przyczyna uniemożliwia odinstalowanie Custom Block:
Istnieje zawartość dla typu encji: Własny blok. Usuń własny blok encji.

Po kliknięciu w "Usuń własny blok encji."  zostałem przeniesiony do /admin/modules/uninstall/entity/block_content gdzie przywitał mnie komunikat:

Czy na pewno usunąć wszystkie własny blok encji? 

* nawa modułu
*
*
*
* nawa modułu
* nawa modułu

Tego działania nie będzie można wycofać. 
Należy wykonać kopię bazy danych jeśli zajdzie potrzeba odzyskania tych elementów.

Trzy puste pozycje na liście bloków, były powiązane z tymi niedoczyszczonymi resztkami po usuniętych własnych blokach, które powodowały wysypanie się Drupala podczas aktualizacji.

Niestety z poziomu PA Drupala nie ma możliwości wyczyszczenia jedynie wybranych pozycji, tylko wszystkich isniejących. Na szczęście bloki, które stworzyłem mogłem odbudować w kilka minut, także w moim przypadku nie stanowiło to problemu.

Po w/w zabiegu, aktualizacja CMS Drupal do wersji 8.4.0 przebiegła bezproblemowo.

Oto w czym mogę Ci pomóc:

Usuwanie szkodliwego oprogramowania ze strony internetowej opartej o na CMS WodPress, Joomla, Drupal i innych.
Przeniesienie strony internetowej na korzystniejszy tj. wydajniejszy i tańszy hosting. Przejście witryny pod inną domenę.
Aktualizacja rdzeni, modułów, rozszerzeń systemów zarządzania treścią Drupal, Wordpress, Joomla i innych CMS.
Wykonanie kopii bezpieczeństwa strony internetowej (pełna struktura plików, katalogów oraz bazy danych) oraz jej archiwizacja.
Działania mające na celu zapewnienie ochrony strony internetowej przed wirusami i atakami hakerskimi.
Dostosowanie strony internetowej do poprawnego wyświetlania na różnych urządzeniach.
Wykonanie napraw stron internetowych opartych na CMS oraz poprawek poprawiających jej estetykę lub funkcjonalność.
Szkolenia i pomoc w obsłudze systemów zarządzania treścią Joomla, Wordpress, Drupal i innych.
Przyspieszenie działania strony internetowej opartej na CMS Drupal, WordPress oraz Joomla, w celu zwiększenia liczby odwiedzin.
Przywracanie / resetowanie haseł dostępu, niezbędnych do pełnej kontroli stron internetowych opartych na CMS.
Projektowanie logo dla stron internetowych, wizytówek, folderów, banerów itp.

Copyright © robofix.eu