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.

Problem ze stroną www?

Odwirusowanie

Robak, wirus na celowniku, na stronie internetowej
Usuwanie szkodliwego oprogramowania ze strony internetowej opartej na CMS WordPress, Joomla!, Drupal i innych.

Migracja

Zielona strzałka (symbol przemieszczenia) na stronie internetowej
Przeniesienie strony internetowej na korzystniejszy tj. wydajniejszy i tańszy hosting. Przejście witryny pod inną domenę.

Aktualizacja

Ruchomy trybik mechanizmu na stronie internetowej
Aktualizacja rdzeni, modułów, rozszerzeń systemów zarządzania treścią Drupal, Wordpress, Joomla i innych CMS.

Upgrade Drupal 7 do 9

Logo CMS Drupal
Uaktualnienie CMS Drupal z wersji 7 na 9. Koniec wsparcia dla Drupal 7 nastąpi 11.2023.

Backup

Dyskietka (symbol zapisu) na stronie internetowej
Wykonanie kopii bezpieczeństwa strony internetowej (pełna struktura plików, katalogów oraz bazy danych) oraz jej archiwizacja.

Zabezpieczenie

Klucz do zamka (symbol zabezpieczenia) na stronie internetowej
Działania mające na celu zapewnienie ochrony strony internetowej przed wirusami i atakami hakerskimi.

Tryb responsywny

Strona internetowa wyświetlona na ekranie monitora i smartfona
Dostosowanie strony internetowej do poprawnego wyświetlania na różnych urządzeniach.

Modyfikacje i naprawy

Skrzyżowane narzędzia (klucz oczkowy i ołówek) na stronie internetowej
Wykonanie napraw stron internetowych opartych na CMS oraz poprawek poprawiających jej estetykę lub funkcjonalność.

Helpdesk

Koło ratunkowe (symbol pomocy) na stronie internetowej
Szkolenia i pomoc w obsłudze systemów zarządzania treścią Joomla, Wordpress, Drupal i innych.

Optymalizacja

Strona internetowa szybka jak rakieta!
Przyspieszenie działania strony internetowej opartej na CMS Drupal, WordPress oraz Joomla, w celu zwiększenia liczby odwiedzin.

Odzyskiwanie haseł

Hasło zagwiazdkowane
Przywracanie / resetowanie haseł dostępu, niezbędnych do pełnej kontroli stron internetowych opartych na CMS.

Projekt logo

Projekt logo dla strony internetowej
Projektowanie logo dla stron internetowych, wizytówek, folderów, banerów itp.