RuntimeException: Неможливо визначити клас для типу поля, знайденого в конфігурації


11

Мій веб-сайт отримав цю помилку під час оновлення з Drupal 8.3.7 до Drupal 8.4.0, і я не можу її вирішити.

На веб-сайті виникла несподівана помилка. Будь-ласка спробуйте пізніше. RuntimeException: Неможливо визначити клас для типу поля 'webform', знайденого в конфігурації 'field.storage.node.webform' в Drupal \ field \ FieldStorageConfigStorage-> mapFromStorageRecords () (рядок 157 core / module / field / src / FieldStorageConfigStorage. php).


Я думаю, це не пов'язано з версією D8. Ймовірно, всі версії будуть повідомляти про однакову помилку, коли у вас є поле, налаштоване в тип вмісту, де код для типу поля неможливо знайти.
4к4

Відповіді:


36

Один з можливих способів полягає в тому, що ваш модуль відсутній у кодовій базі або був неправильно видалений, і ви все ще є полем, яке використовує цей відсутній модуль.

Спробуйте наступні drushкоманди / SQL, щоб видалити розбите поле:

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%'"

Попередження : Не виконуйте вище команд на базі даних master / live. Зробіть резервну копію перед будь-якими змінами бази даних.

Де field.storage.xxx.xxxваш тип зберігання в повідомленому полі (наприклад field.storage.node.webform).

Якщо вище не допоможе, перевірте, чи немає інших посилань:

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

Наприкінці потрібно відновити кеші:

drush cr

1
Дуже дякую за рішення. Це, безумовно, допоможе.

1
Це абсолютно має бути прийнятою відповіддю
Mrweiner

Дякую @kenorb за цю чудову відповідь. +1
Beto Aveiga

2

У мене була подібна помилка з іншим модулем (адреса в моєму випадку). Я міг би це виправити, просто перевстановивши відповідний модуль на консоль drupal наступною командою:

drupal module:install address

І повернутися до справи :)


+1 так, я також вважав, що це працює.
therobyouknow

Я зробив заново встановити з composer require drupal/address - як хто -то інший зробив тут: drupal.org/project/address/issues/2868049#comment-12044874
therobyouknow
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.