RuntimeException: no se puede determinar la clase para el tipo de campo encontrado en la configuración

11

Mi sitio web recibió este error al actualizar Drupal 8.3.7 a Drupal 8.4.0 y no puedo resolverlo.

El sitio web encontró un error inesperado. Por favor, inténtelo de nuevo más tarde. RuntimeException: no se puede determinar la clase para el tipo de campo 'webform' que se encuentra en la configuración 'field.storage.node.webform' en Drupal \ field \ FieldStorageConfigStorage-> mapFromStorageRecords () (línea 157 de core / modules / field / src / FieldStorageConfigStorage. php).

kenorb
fuente
Creo que esto no está conectado a la versión D8. Probablemente todas las versiones informarán el mismo error cuando tenga un campo configurado en un tipo de contenido donde no se puede encontrar el código para el tipo de campo.
4k4

Respuestas:

35

Una forma posible es que su módulo no se encuentre en la base de código o que se haya desinstalado incorrectamente y que todavía tenga un campo que esté usando ese módulo que falta.

Pruebe los siguientes drushcomandos / SQL para eliminar el campo roto:

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

Advertencia : No ejecute los comandos anteriores en la base de datos master / live. Haga una copia de seguridad antes de realizar cambios en la base de datos.

¿Dónde field.storage.xxx.xxxestá su tipo de almacenamiento de campo informado (por ejemplo field.storage.node.webform)?

Si lo anterior no ayuda, verifique cualquier otra referencia al:

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

Al final necesita reconstruir sus cachés:

drush cr
kenorb
fuente
1
Muchas gracias por la solución. Seguramente va a ayudar.
1
Esta debería ser la respuesta aceptada
Mrweiner
Gracias @kenorb por esta gran respuesta. +1
Beto Aveiga
2

Tuve un error similar con otro módulo (dirección en mi caso). Podría solucionarlo simplemente reinstalando el módulo en cuestión con la consola drupal con el siguiente comando:

drupal module:install address

Y de vuelta al negocio :)

Drupal de Comptoir
fuente
+1 sí, encontré que esto también funciona.
therobyouknow
Hice la reinstalación con composer require drupal/address , como lo hizo otra persona aquí: drupal.org/project/address/issues/2868049#comment-12044874
therobyouknow