RuntimeException: impossible de déterminer la classe pour le type de champ trouvé dans la configuration


11

Mon site Web a rencontré cette erreur lors de la mise à jour de Drupal 8.3.7 vers Drupal 8.4.0 et je ne parviens pas à le résoudre.

Le site Web a rencontré une erreur inattendue. Veuillez réessayer plus tard. RuntimeException: impossible de déterminer la classe pour le type de champ 'webform' trouvé dans la configuration 'field.storage.node.webform' dans Drupal \ field \ FieldStorageConfigStorage-> mapFromStorageRecords () (ligne 157 de core / modules / field / src / FieldStorageConfigStorage. php).


Je pense que ce n'est pas lié à la version D8. Toutes les versions rapporteront probablement la même erreur lorsque vous avez un champ configuré dans un type de contenu où le code pour le type de champ est introuvable.
4k4

Réponses:


35

Une façon possible est que votre module soit absent de la base de code ou qu'il ait été mal désinstallé et que vous ayez toujours un champ qui utilise ce module manquant.

Essayez les drushcommandes / SQL suivantes pour supprimer le champ interrompu:

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

Avertissement : N'exécutez pas les commandes ci-dessus sur la base de données master / live. Effectuez une sauvegarde avant d'apporter des modifications à la base de données.

field.storage.xxx.xxxest votre type de stockage sur le terrain (par exemple field.storage.node.webform).

Si ci-dessus ne vous aide pas, vérifiez toute autre référence en:

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

À la fin, vous devez reconstruire vos caches:

drush cr

1
Merci beaucoup pour la solution. Ça va sûrement aider.

1
Cela devrait absolument être la réponse acceptée
Mrweiner

Merci @kenorb pour cette excellente réponse. +1
Beto Aveiga

2

J'ai eu une erreur similaire avec un autre module (adresse dans mon cas). Je pourrais le réparer en réinstallant simplement le module concerné avec la console drupal par la commande suivante:

drupal module:install address

Et revenons aux affaires :)


+1 oui, j'ai également trouvé que cela fonctionnait.
therobyouknow

J'ai fait la réinstallation avec composer require drupal/address - comme quelqu'un d'autre ici: drupal.org/project/address/issues/2868049#comment-12044874
therobyouknow
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.