ในขณะที่การแก้ไขถูกเก็บไว้และเป็นเรื่องง่ายที่จะกลับไปที่การแก้ไขก่อนหน้าของโหนดฉันสงสัยว่ามันเป็นไปได้หรือไม่ที่จะกู้คืนโหนดที่ผู้ใช้ลบจริง ๆ ?
ในขณะที่การแก้ไขถูกเก็บไว้และเป็นเรื่องง่ายที่จะกลับไปที่การแก้ไขก่อนหน้าของโหนดฉันสงสัยว่ามันเป็นไปได้หรือไม่ที่จะกู้คืนโหนดที่ผู้ใช้ลบจริง ๆ ?
คำตอบ:
หากคุณมีการสำรองฐานข้อมูล (ซึ่งคุณควร;) คุณสามารถคืนค่าสำเนาเก่าของไซต์และเรียกคืนได้ด้วยวิธีดังกล่าว
Drupal ให้คำเตือนที่ชัดเจนแก่ผู้ใช้ว่าการลบโหนดถือเป็นที่สิ้นสุดและมีกล่องโต้ตอบการยืนยัน
สิ่งที่คริสพูด รหัสอ่าน
db_query('DELETE FROM {node} WHERE nid = %d', $node->nid);
db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid);
... ดังนั้นจึงถูกลบจริงๆหมายความว่าถูกลบ
เพื่อป้องกันอุบัติเหตุเช่นนี้คุณอาจต้องการ จำกัด การอนุญาตของผู้ใช้เพื่อให้ผู้ใช้ไม่สามารถลบได้ แต่จะเป็นการยกเลิกการเผยแพร่โหนดเท่านั้น โหนดที่ไม่ได้เผยแพร่จะไม่ปรากฏในเว็บไซต์ของคุณ (สมมติว่าไซต์ของคุณสร้างขึ้นอย่างถูกต้อง) แต่ยังคงมีอยู่ในฐานข้อมูล
ใช่มีหลายวิธีสำหรับการนี้
นี่คือข้อเสนอแนะในการสร้างสิ่งที่คริสพูดว่าคำตอบของวิศวกรย้อนกลับ @ marcvangend ฉันชอบที่จะใช้ phpMyAdmin แต่คุณสามารถทำกระบวนการเดียวกันกับบรรทัดคำสั่งถ้าคุณชอบที่ดีกว่า
เช่นเดียวกับคำตอบอื่น ๆ สมมติว่าคุณมีข้อมูลสำรองของฐานข้อมูล ไม่มีข้อแก้ตัวที่จะไม่ไปกับโมดูลที่ยอดเยี่ยมเช่นการสำรองข้อมูล & ย้ายข้อมูลออกจากที่นั่น
node
ตารางค้นหาโหนดที่ถูกลบของคุณ หวังว่าคุณจะรู้หมายเลข แต่ถ้าคุณไม่คิดออกตอนนี้node_revisions
ตาราง ค้นหา nid ของโหนดที่ถูกลบและส่งออก ควรมีอย่างน้อยหนึ่งแถว แต่อาจมีมากกว่านั้น ส่งออกทุกอย่างด้วยหมายเลขของคุณการใช้วิธีนี้จะช่วยให้คุณสามารถกู้คืนโหนดเดียวจากการสำรองข้อมูลโดยไม่สูญเสียการเปลี่ยนแปลงใด ๆ กับฐานข้อมูลตั้งแต่การสำรองข้อมูลครั้งล่าสุด หากคุณไม่กังวลเกี่ยวกับสิ่งนั้นและคุณไม่ได้คิดอะไรนอกจากการลบเกิดขึ้นตั้งแต่การสำรองข้อมูลครั้งล่าสุดมันจะง่ายกว่าถ้าคุณทำการกู้คืนข้อมูลสำรองครั้งล่าสุดแบบเต็มรูปแบบเพื่อดำเนินการตามกระบวนการข้างต้น
node
โต๊ะและไม่เห็นตัวเลขที่ลบไปตรงนั้นล่ะ? สิ่งนี้หมายความว่าสิ่งที่ดูน่ากลัว? เว็บไซต์นี้เป็น Drupal 8 โดยวิธีการ
ฉันเป็นคนดี แต่คำตอบคือใช้โมดูลสำรองข้อมูลเอนทิตี https://www.drupal.org/project/entity_backup