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

วิธีหนึ่งที่เป็นไปได้คือโมดูลของคุณหายไปจาก codebase หรือถูกถอนการติดตั้งอย่างไม่เหมาะสมและคุณยังคงเป็นฟิลด์ที่ใช้โมดูลที่ขาดหายไปนั้น

ลอง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
Beto Aveiga

2

ฉันมีข้อผิดพลาดคล้ายกันกับโมดูลอื่น (ที่อยู่ในกรณีของฉัน) ฉันสามารถแก้ไขได้โดยเพียงแค่ติดตั้งโมดูลที่เกี่ยวข้องกับคอนโซล drupal อีกครั้งโดยคำสั่งต่อไปนี้:

drupal module:install address

และกลับไปทำธุรกิจ :)


+1 ใช่ฉันพบสิ่งนี้เพื่อทำงานเช่นกัน
therobyouknow

ฉันทำการติดตั้งซ้ำcomposer require drupal/address - เหมือนที่คนอื่นทำที่นี่: drupal.org/project/address/issues/2868049#comment-12044874
therobyouknow
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.