RuntimeException: Nie można określić klasy dla typu pola znalezionego w konfiguracji

11

Moja witryna otrzymała ten błąd podczas aktualizacji z Drupal 8.3.7 do Drupal 8.4.0 i nie jestem w stanie go rozwiązać.

Witryna napotkała nieoczekiwany błąd. Spróbuj ponownie później. RuntimeException: Nie można określić klasy dla typu pola „webform” znalezionego w konfiguracji „field.storage.node.webform” w Drupal \ field \ FieldStorageConfigStorage-> mapFromStorageRecords () (wiersz 157 rdzenia / modułów / field / src / FieldStorageConfigStorage. php).

kenorb
źródło
Myślę, że nie jest to związane z wersją D8. Prawdopodobnie wszystkie wersje zgłaszają ten sam błąd, gdy pole jest skonfigurowane w typie zawartości, w którym nie można znaleźć kodu dla typu pola.
4k4

Odpowiedzi:

36

Jednym z możliwych sposobów jest to, że brakuje modułu w bazie kodu lub został on nieprawidłowo odinstalowany, a nadal masz pole, które używa tego brakującego modułu.

Wypróbuj następujące drushpolecenia / SQL, aby usunąć uszkodzone pole:

drush sqlq "DELETE FROM cache_config"
drush sqlq "DELETE FROM config WHERE name = 'field.storage.xxx.xxx' OR data LIKE '%field.storage.xxx.xxx%'"
drush sqlq "DELETE FROM config_snapshot  WHERE name = 'field.storage.xxx.xxx' OR data LIKE '%field.storage.xxx.xxx%'"

Ostrzeżenie : Nie wykonuj powyższych poleceń w bazie danych master / live. Wykonaj kopię zapasową przed wprowadzeniem jakichkolwiek zmian w bazie danych.

Gdzie field.storage.xxx.xxxjest zgłoszony typ miejsca przechowywania (np field.storage.node.webform.).

Jeśli powyższe nie pomoże, sprawdź, czy nie ma innych odniesień:

drush sql-dump --ordered-dump | grep field.storage.xxx.xxx

Na koniec musisz odbudować swoje pamięci podręczne:

drush cr
kenorb
źródło
1
Dziękuję bardzo za rozwiązanie. Z pewnością pomoże.
1
To powinna być absolutnie zaakceptowana odpowiedź
Mrweiner,
Dzięki @kenorb za tę świetną odpowiedź. +1
Beto Aveiga,
2

Miałem podobny błąd z innym modułem (adres w moim przypadku). Mogę to naprawić, po prostu ponownie instalując dany moduł z konsolą drupal, wykonując następujące polecenie:

drupal module:install address

I wracając do biznesu :)

Drupal de Comptoir
źródło
+1 tak, znalazłem, że to również działa.
therobyouknow
Zrobiłem ponowną instalację z composer require drupal/address - jak ktoś tutaj: drupal.org/project/address/issues/2868049#comment-12044874
therobyouknow
0

Kiedy widzę ten błąd, moja sztuczka polega na ponownym włączeniu modułu obrażającego z wiersza poleceń, a następnie wyczyszczeniu pamięci podręcznej. Na przykład:

lando drush cr                                                                                                                                                                             

In FieldStorageConfigStorage.php line 174:

  Unable to determine class for field type 'simplenews_issue' found in the 'field.storage.node.simplenews_issue' configuration  


In DiscoveryTrait.php line 53:

  The "simplenews_issue" plugin does not exist. Valid plugin IDs for Drupal\Core\Field\FieldTypePluginManager are: address, address_zone, address_country, comment, datetime, file_uri, file, image, link, list_float, list_string, list_integer, path, text_  
  with_summary, text, text_long, integer, uri, entity_reference, uuid, float, email, timestamp, string, language, created, changed, map, string_long, password, decimal, boolean                                                                               

lando drush en simplenews                                                                                                                                                                 
 [notice] Already enabled: simplenews
lando drush cr                                                                                                                                                                             
 [success] Cache rebuild complete. 
mpaler
źródło