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


11

Мой веб-сайт получил эту ошибку при обновлении с Drupal 8.3.7 до Drupal 8.4.0, и я не могу ее исправить.

Сайт обнаружил непредвиденную ошибку. Пожалуйста, попробуйте позже. RuntimeException: Невозможно определить класс для типа поля «webform», найденного в конфигурации «field.storage.node.webform» в Drupal \ field \ FieldStorageConfigStorage-> mapFromStorageRecords () (строка 157 из core / modules / field / src / FieldStorageConfigStorage. PHP).


Я думаю, что это не связано с версией D8. Вероятно, все версии сообщат об одной и той же ошибке, если у вас настроено поле в типе контента, где код для типа поля не найден.
4k4

Ответы:


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

Предупреждение : не выполняйте вышеуказанные команды в основной / действующей базе данных. Сделайте резервную копию, прежде чем делать какие-либо изменения в базе данных.

Где 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
Бето Авейга

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.