ฉันพยายามสร้างประเภทเนื้อหาใหม่สำหรับไซต์ของฉัน และฉันเลือกชื่อฟิลด์ ("คำอธิบาย") ที่ใช้อยู่แล้วสำหรับเนื้อหาประเภทอื่น
ปัญหาเกิดขึ้นเมื่อบันทึกการเปลี่ยนแปลงเนื่องจากชื่อเครื่องสำหรับฟิลด์มีอยู่แล้วสำหรับฟิลด์ในประเภทเนื้อหาอื่น แต่มีฟิลด์ประเภทอื่น ในประเภทเนื้อหาอื่นๆ ฉันใช้ประเภทฟิลด์ "ข้อความยาว" ที่เป็นค่าเริ่มต้น แต่ในกรณีนี้ ฉันเลือก "ฟิลด์อ่านเพิ่มเติม" เนื่องจากเหมาะกับกรณีการใช้งานของฉันมากกว่า
ฉันสังเกตเห็นปัญหาและกลับไปเปลี่ยนชื่อเครื่องเพียงเพื่อค้นพบว่าฉันได้สร้างสองฟิลด์และหนึ่งในนั้นมีชื่อเครื่องที่มีปัญหาที่ฉันกล่าวถึงก่อนหน้านี้
เมื่อพยายามลบฟิลด์ดังกล่าว ฉันไปที่ ผู้ดูแลระบบ/โครงสร้าง/ประเภท/จัดการ/my_custom_content_type/fields
และใช้ตัวเลือก UI ที่เลือก "ลบ"
จากนั้น UI ของผู้ดูแลระบบแสดงให้ฉันเห็นหน้าจอซึ่งแสดงการเปลี่ยนแปลงที่ฉันกำลังจะทำ และเมื่อฉันเลือก "ยอมรับ" ไซต์ของฉันจะพาฉันไปที่หน้าว่างพร้อมข้อความ: "เว็บไซต์พบข้อผิดพลาดที่ไม่คาดคิด ลองดูสิ อีกครั้งในภายหลัง."
เมื่อฉันตรวจสอบบันทึก นี่คือข้อความแสดงข้อผิดพลาดที่ฉันเห็น:
[06-พ.ย.-2021 03:07:49] คำเตือน: [pool www] child 2014 กล่าวใน stderr: "NOTICE: PHP message: Uncaught PHP Exception Drupal\Core\Database\DatabaseExceptionWrapper: "SQLSTATE[42S22]: ไม่พบคอลัมน์ : 1054 คอลัมน์ที่ไม่รู้จัก 'field_description_teaser_value' ใน 'where clause': SELECT 1 AS expression"
[06-พ.ย.-2021 03:07:49] คำเตือน: [pool www] child 2014 กล่าวใน stderr: "FROM"
[06-พ.ย.-2021 03:07:49] คำเตือน: [pool www] child 2014 กล่าวใน stderr: "{node_revision__field_description} t"
[06-พ.ย.-2021 03:07:49] คำเตือน: [pool www] child 2014 กล่าวใน stderr: "WHERE (field_description_teaser_value IS NOT NULL) OR (field_description_teaser_format IS NOT NULL) OR (field_description_hidden_value is not NULL) OR (field_description_hidden_format IS ไม่เป็นโมฆะ)"
[06-พ.ย.-2021 03:07:49] คำเตือน: [pool www] child 2014 กล่าวใน stderr: "LIMIT 1 OFFSET 0; Array"
[06-พ.ย.-2021 03:07:49] WARNING: [pool www] child 2014 said into stderr: "("
[06-พ.ย.-2021 03:07:49] คำเตือน: [pool www] child 2014 กล่าวใน stderr: ")"
[06-พ.ย.-2021 03:07:49] คำเตือน: [pool www] child 2014 กล่าวใน stderr: "" ที่บรรทัด /var/www/html/web/core/lib/Drupal/Core/Database/Connection.php 701"
2021/11/06 03:07:49 [ข้อผิดพลาด] 2010#2010: *21776 FastCGI ส่งใน stderr: "ข้อความ PHP: Uncaught PHP Exception Drupal\Core\Database\DatabaseExceptionWrapper: "SQLSTATE[42S22]: ไม่พบคอลัมน์: 1054 คอลัมน์ที่ไม่รู้จัก 'field_description_teaser_value' ใน 'where clause': SELECT 1 AS expression
จาก
{node_revision__field_description} เ
โดยที่ (field_description_teaser_value ไม่เป็นโมฆะ) หรือ (field_description_teaser_format ไม่เป็นโมฆะ) หรือ (field_description_hidden_value ไม่เป็นโมฆะ) หรือ (field_description_hidden_format ไม่เป็นโมฆะ)
ลิมิต 1 ออฟเซ็ต 0; อาร์เรย์
(
)
" ที่ /var/www/html/web/core/lib/Drupal/Core/Database/Connection.php บรรทัด 701" ขณะอ่านส่วนหัวการตอบสนองจากอัปสตรีม ไคลเอ็นต์: 172.18.0.6 เซิร์ฟเวอร์: คำขอ: "GET /admin/ โครงสร้าง/ประเภท/การจัดการ/my_custom_content_type/fields/node.my_custom_content_type.field_description/storage HTTP/1.1", อัปสตรีม: "fastcgi://unix:/run/php-fpm.sock:", โฮสต์: "custom-site.ddev .site", ผู้อ้างอิง: "https://custom-site.ddev.site/admin/structure/types/manage/my_custom_content_type/fields"
เมื่อเปิดตัว phpmyadmin
ไม่มีชื่อคอลัมน์ที่แสดงในส่วนคำสั่ง where node_revision__field_description
ตารางเนื่องจากคอลัมน์เหล่านั้นถูกสร้างขึ้นสำหรับเขตข้อมูลประเภทอื่น
ณ จุดนี้ ฉันไม่สามารถสร้างเนื้อหาใดๆ โดยใช้ประเภทเนื้อหานี้ และฉันต้องการลบออกและเริ่มต้นใหม่ตั้งแต่ต้นด้วยการสร้างชื่อเครื่องใหม่ที่ดีกว่า และพยายามหลีกเลี่ยงข้อผิดพลาดเหล่านั้น
คำถามของฉันคือ มีวิธีที่ปลอดภัยในการลบประเภทเนื้อหาโดยใช้ SQL หรือ drush หรือไม่
ฉันพยายามลบออกผ่านอินเทอร์เฟซผู้ดูแลระบบ แต่ผลลัพธ์มีข้อผิดพลาดเดียวกันกับตอนที่ฉันพยายามลบฟิลด์นี้