RuntimeException:无法确定配置中找到的字段类型的类


11

从Drupal 8.3.7更新到Drupal 8.4.0时,我的网站出现此错误,但无法解决。

该网站遇到意外错误。请稍后再试。RuntimeException:无法确定在Drupal \ field \ FieldStorageConfigStorage-> mapFromStorageRecords()的“ field.storage.node.webform”配置中找到的字段类型“ webform”的类(core / modules / field / src / FieldStorageConfigStorage的第157行)。 php)。


我认为这与D8版本无关。当您在内容类型中配置了一个字段,而找不到该字段类型的代码时,可能所有版本都会报告相同的错误。
4k4

Answers:


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 '19

感谢@kenorb这个好答案。+1
Beto Aveiga

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.