Score:1

จะคืนค่าตัวสร้างเลย์เอาต์แทนที่เลย์เอาต์จากสแน็ปช็อต DB เก่าได้อย่างไร

ธง ru

หลังจากอัปเกรดจาก Drupal v9.1.7 เป็น v9.2.0 บนโหนดจำนวนมาก เค้าโครงแทนที่ตัวสร้างเลย์เอาต์แบบกำหนดเองถูกรีเซ็ตเป็นเลย์เอาต์เริ่มต้น ส่งผลให้ข้อมูลสูญหายจำนวนมาก ยิ่งไปกว่านั้น เหตุการณ์นี้เกิดขึ้นเฉพาะตอนแสดงสดไม่ใช่บนเวที และเพิ่งสังเกตเห็นในอีกไม่กี่วันต่อมา ฉันไม่รู้ว่าอะไรเป็นสาเหตุของปัญหา ลูกค้าค่อนข้างอารมณ์เสีย และฉันต้องกู้คืนเลย์เอาต์แทนที่อย่างรวดเร็วและเฉพาะเจาะจงจากสแน็ปช็อต DB ในคืนก่อนการอัปเดต (และปล่อยให้ข้อมูลที่เหลือไม่ถูกแตะต้อง)

จนถึงตอนนี้ฉันรู้สองสิ่ง:

  • โหนดที่ได้รับผลกระทบทั้งหมดมี node.change การประทับเวลาที่ตรงกับเวลาของการปรับใช้การอัปเดต
  • บนโหนดที่ได้รับผลกระทบทั้งหมด node__layout_builder_layout ถูกตัดให้เหลือหนึ่งส่วน (เหมือนกับค่าเริ่มต้น เค้าโครงที่ไม่แทนที่)
  • ในโหนดที่ได้รับผลกระทบทั้งหมด เฉพาะการแก้ไขครั้งล่าสุดเท่านั้นที่จะหายไป โดยไม่ต้องสร้างรหัสการแก้ไขใหม่
  • เลย์เอาต์แทนที่มักจะประกอบด้วยแบบกำหนดเองซึ่งไม่สามารถใช้ซ้ำได้ block_content บล็อก บล็อกทั้งหมดยังคงมีอยู่ในฐานข้อมูล

ฉันต้องการทราบ:

  1. ฉันจะตรวจสอบได้อย่างไรว่าโหนดมีเค้าโครงแทนที่ หรือกำลังใช้เค้าโครงเริ่มต้นของตัวสร้างเค้าโครง (หากเป็นไปได้ด้วยแบบสอบถาม SQL ธรรมดา โดยไม่มี PHP)
  2. ฉันต้องกู้คืนอะไรอีกนอกจาก node__layout_builder_layout ตาราง (สมมติว่าบล็อกเนื้อหาแบบกำหนดเองที่ใช้โดยโครงร่างการแทนที่ยังคงมีอยู่) เพื่อกู้คืนโครงร่างการแทนที่ของโหนด
  3. ฉันสามารถใช้ SQL อย่างประหยัดได้หรือไม่ โดยที่ a <> b หรือ SQL โดยที่ a = b กับ และ เป็นเนื้อหาหยดของ node__layout_builder_layout.layout_builder__layout_section ?
Score:0
ธง ru

ตอบคำถามของฉัน 2:

(หากบล็อกเนื้อหาที่กำหนดเองที่อ้างอิง ฯลฯ ยังคงมีอยู่ในฐานข้อมูล...)
การคืนค่า node__layout_builder__รูปแบบ ตารางคืนค่าเค้าโครงแทนที่ ไม่ต้องใช้ตารางอื่น

Score:0
ธง cn

ฉันสามารถตอบคำถามแรกได้อย่างรวดเร็ว มีตารางชื่อ node__layout_builder__layout ที่เก็บเฉพาะโหนดที่แทนที่เค้าโครงเริ่มต้นสำหรับโหนดนั้น ดังนั้น หากคุณสร้าง 2 โหนดด้วยรหัส 1 และ 2 และคุณใช้เค้าโครงเริ่มต้นสำหรับโหนด 1 แต่แทนที่เค้าโครงสำหรับโหนด 2 ใน node__layout_builder__layout คุณจะเห็นเฉพาะโหนด 2 ดังนั้นคุณจึงสามารถรับโหนดทั้งหมดและแยกแยะโหนดที่พบในตารางนั้นได้ . อย่าลืมตรวจสอบฟิลด์เดลต้าเพื่อตรวจสอบความแตกต่างระหว่างการแก้ไข

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา