RuntimeException: Não foi possível determinar a classe para o tipo de campo encontrado na configuração

11

Meu site recebeu esse erro durante a atualização do Drupal 8.3.7 para o Drupal 8.4.0 e não consigo resolvê-lo.

O site encontrou um erro inesperado. Por favor, tente novamente mais tarde. RuntimeException: Não foi possível determinar a classe para o tipo de campo 'webform' encontrada na configuração 'field.storage.node.webform' em Drupal \ field \ FieldStorageConfigStorage-> mapFromStorageRecords () (linha 157 de core / modules / field / src / FieldStorageConfigStorage. php).

kenorb
fonte
Eu acho que isso não está conectado à versão D8. Provavelmente, todas as versões reportarão o mesmo erro quando você tiver um campo configurado em um tipo de conteúdo em que o código para o tipo de campo não possa ser encontrado.
4k4

Respostas:

34

Uma maneira possível é que seu módulo esteja ausente da base de código ou tenha sido desinstalado incorretamente e você ainda tenha um campo que esteja usando esse módulo ausente.

Experimente os seguintes drushcomandos / SQL para remover o campo quebrado:

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

Aviso : Não execute os comandos acima no banco de dados mestre / ativo. Faça um backup antes de fazer alterações no banco de dados.

Onde field.storage.xxx.xxxestá o seu tipo de armazenamento de campo relatado (por exemplo field.storage.node.webform).

Se o procedimento acima não ajudar, verifique outras referências:

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

No final, você precisa reconstruir seus caches:

drush cr
kenorb
fonte
1
Muito obrigado pela solução. Certamente vai ajudar.
1
Esta deve ser absolutamente a resposta aceita
#
Obrigado @kenorb por esta ótima resposta. +1
Beto Aveiga 12/09/19
2

Eu tive um erro semelhante com outro módulo (endereço no meu caso). Eu poderia corrigi-lo simplesmente reinstalando o módulo em questão com o console drupal, usando o seguinte comando:

drupal module:install address

E de volta aos negócios :)

Drupal de Comptoir
fonte
+1 Sim, achei que isso também funcionava.
therobyouknow
Eu fiz o re-instalar com composer require drupal/address - como alguém fez aqui: drupal.org/project/address/issues/2868049#comment-12044874
therobyouknow