Score:0

"คำจำกัดความของเอนทิตีและ/หรือฟิลด์ที่ไม่ตรงกัน" หลังจากเปิดใช้งานโมดูลที่สนับสนุน

ธง in

ฉันติดตั้งโมดูล Rabbit Hole ใน Drupal 9 ฉันได้รับข้อความนี้ในหน้าสถานะทันที:

คำจำกัดความของเอนทิตีและ/หรือฟิลด์ที่ไม่ตรงกัน

ตรวจพบการเปลี่ยนแปลงต่อไปนี้ในประเภทเอนทิตีและคำนิยามฟิลด์
ผู้ใช้
ต้องติดตั้งช่องการดำเนินการ Rabbit Hole
เส้นทางเปลี่ยนเส้นทาง Rabbit Hole จำเป็นต้องติดตั้งฟิลด์
ต้องติดตั้งฟิลด์รหัสตอบกลับการเปลี่ยนเส้นทาง Rabbit Hole
ต้องติดตั้งฟิลด์การดำเนินการทางเลือกการเปลี่ยนเส้นทาง Rabbit Hole

ทุกคนดูเหมือนจะพูดว่าเรียกใช้การอัปเดตเอนทิตีของ devel แต่หน้าโมดูลนั้นบอกว่า:

เป้าหมายของโมดูลนี้คือมีวิธีที่รวดเร็วในการใช้การอัปเดตสคีมา ในขณะที่พัฒนาประเภทเอนทิตีใหม่และเพิ่มขึ้นเรื่อยๆ การเพิ่ม/ลบ/เปลี่ยนประเภทเอนทิตี/คำจำกัดความของฟิลด์

เมื่อการเปลี่ยนแปลงเหล่านี้เป็นส่วนหนึ่งของการเปิดตัวอย่างเป็นทางการ (ไม่ใช่ใน ขอบเขตของเซสชันการพัฒนารหัส) พวกเขาควรพึ่งพาอย่างแน่นอน ฟังก์ชันการอัพเดต DB ตามที่อธิบายไว้ใน CR ข้างต้น เนื่องจากนั่นคือ วิธีเดียวที่กระบวนการอัปเดตสคีมาของเอนทิตีสามารถคาดการณ์ได้และ เชื่อถือได้.

ด้วยเหตุผลนี้ โมดูลนี้ขึ้นอยู่กับ Devel และไม่ได้ถูกกำหนดให้เป็นอย่างนั้น เปิดใช้งานในสภาพแวดล้อมการผลิตหรือพึ่งพาในการปรับใช้ เวิร์กโฟลว์ ดู #3082442: เหตุใดจึงไม่เปิดใช้งานในการผลิต สภาพแวดล้อม? สำหรับรายละเอียดเพิ่มเติม

ดังนั้นจึงไม่ควรใช้หรือวิ่งในการผลิต? การรันในเครื่องจะไม่ทำให้เกิดการเปลี่ยนแปลงใดๆ กับการส่งออกคอนฟิกูเรชัน แล้วคุณจะทำอย่างไรกับฐานข้อมูลการผลิต?

ผู้คนบอกว่าการอัปเดตเหล่านี้ควรเกิดขึ้นในเบ็ดอัปเดตแทน นั่นหมายความว่าอย่างไร? ภาระนี้อยู่ที่ผู้พัฒนาหรือผู้ใช้ที่ต้องทำ? ฉันได้เห็นสิ่งนี้เป็นครั้งคราวด้วยโมดูลที่สนับสนุน และไม่เข้าใจว่าการอัปเดตเอนทิตีของ devel จะ "แก้ไข" (อย่างถูกต้อง แก้ไข) ปัญหานี้ หรือหากมีวิธีที่เป็นรูปธรรมในการเปลี่ยนแปลงนี้

4uk4 avatar
cn flag
You don't need an update hook to install or uninstall a module containing a field definition. The last issue concerning this was solved in Drupal 8.5. See https://www.drupal.org/project/drupal/issues/2282119. Update hooks are for changes in already installed modules.
sonfd avatar
in flag
Does running the entity updates command remove the message from your status page locally?
Score:1
ธง cn

คุณไม่ได้รับ "เอนทิตีและ/หรือคำจำกัดความของฟิลด์ที่ไม่ตรงกัน" หลังจากติดตั้ง/ถอนการติดตั้งโมดูล contrib โดยเพิ่มฟิลด์พื้นฐานให้กับเอนทิตีที่มีอยู่

ขั้นตอนในการสืบพันธุ์:

  • นักแต่งเพลงต้องการ 'drupal/rabbit_hole:^1.0@beta'
  • เปิดใช้งานโมดูลหลัก Rabbit Hole และโมดูลย่อยของผู้ใช้ Rabbit Hole
  • ตาราง users_field_data มี 4 ฟิลด์ใหม่
  • หน้าสเตตัสชัดเจน
  • แก้ไขผู้ใช้ด้วยการตั้งค่าโพรงกระต่ายแต่ละรายการเพื่อเติมข้อมูลในฟิลด์
  • ตรวจสอบฐานข้อมูล เก็บข้อมูล
  • ถอนการติดตั้งโมดูล
  • เขตข้อมูลจะถูกย้ายจาก users_field_data ไปยังตาราง field_deleted_data_* แยกต่างหาก
  • เรียกใช้ cron
  • field_deleted_data_* ถูกลบออกจากฐานข้อมูล

หากโมดูลไม่ได้ติดตั้ง/ถอนการติดตั้งอย่างถูกต้องเช่นนี้ ให้ย้อนกลับและทดสอบก่อนในสำเนาของไซต์ในเครื่องจนกว่าจะใช้งานได้ อย่าใช้เครื่องมือ dev เช่นการอัปเดตเอนทิตีของ devel กับข้อมูลการผลิต ยิ่งกว่านั้นสำหรับโมดูลที่ยังคงอยู่ในตารางเอนทิตีหลักที่เปลี่ยนแปลงเบต้า

Kevin avatar
in flag
เป็นเรื่องปกติหรือไม่? หรือเป็นเฉพาะโมดูลนั้น
4uk4 avatar
cn flag
ลักษณะการทำงานที่แน่นอนนี้เป็นเรื่องปกติสำหรับโมดูลทั้งหมดที่เพิ่มฟิลด์พื้นฐานให้กับเอนทิตีที่มีอยู่
Kevin avatar
in flag
Odd... I wonder what triggered this message for me. I just recall enabling it.

โพสต์คำตอบ

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