เป็นไปได้หรือไม่ที่จะกู้คืนโหนดที่ลบไป


18

ในขณะที่การแก้ไขถูกเก็บไว้และเป็นเรื่องง่ายที่จะกลับไปที่การแก้ไขก่อนหน้าของโหนดฉันสงสัยว่ามันเป็นไปได้หรือไม่ที่จะกู้คืนโหนดที่ผู้ใช้ลบจริง ๆ ?

คำตอบ:


20

หากคุณมีการสำรองฐานข้อมูล (ซึ่งคุณควร;) คุณสามารถคืนค่าสำเนาเก่าของไซต์และเรียกคืนได้ด้วยวิธีดังกล่าว

Drupal ให้คำเตือนที่ชัดเจนแก่ผู้ใช้ว่าการลบโหนดถือเป็นที่สิ้นสุดและมีกล่องโต้ตอบการยืนยัน


19

สิ่งที่คริสพูด รหัสอ่าน

    db_query('DELETE FROM {node} WHERE nid = %d', $node->nid);
    db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid);

... ดังนั้นจึงถูกลบจริงๆหมายความว่าถูกลบ

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


6
เคล็ดลับพิเศษ: สำหรับแท็บเฉพาะและควบคุมผู้ที่สามารถยกเลิกการเผยแพร่ได้มากขึ้นลองดูโมดูลเนื้อหาเผยแพร่: drupal.org/project/publishcontent
marcvangend

2

ใช่มีหลายวิธีสำหรับการนี้

  • คนแรกคือการใช้การสำรองข้อมูลเต็มรูปแบบซึ่งได้รับการกล่าวถึงโดยคริสที่นี่ นี่เป็นสิ่งที่ยากที่สุดโดยเฉพาะถ้าโหนดมีเขตข้อมูลที่ซับซ้อน
  • ใช้https://drupal.org/project/recoverโมดูลซึ่งตรวจสอบ
  • ใช้https://drupal.org/project/entity_soft_deleteโมดูล มันสร้างประเภทรีไซเคิล / ถังขยะสำหรับโหนด / เอนทิตีดังนั้นเมื่อโหนดใดถูกลบจะไม่ถูกลบออกจากฐานข้อมูลเฉพาะสถานะที่เปลี่ยนเป็นลบ ดังนั้นผู้ดูแลระบบยังสามารถดูหรือใช้งานได้และหากจำเป็นต้องเปลี่ยนสถานะกลับเป็นปกติหรือลบอย่างถาวร

0

นี่คือข้อเสนอแนะในการสร้างสิ่งที่คริสพูดว่าคำตอบของวิศวกรย้อนกลับ @ marcvangend ฉันชอบที่จะใช้ phpMyAdmin แต่คุณสามารถทำกระบวนการเดียวกันกับบรรทัดคำสั่งถ้าคุณชอบที่ดีกว่า

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

  1. สร้างฐานข้อมูล MySQL ใหม่ที่ว่างเปล่าที่เรียกว่า "คืนค่า" หรือ "การทดสอบ" หรือบางอย่างที่คล้ายกัน
  2. สร้างการสำรองข้อมูลด้วยตนเองใหม่เพื่อให้คุณสามารถกลับมาใช้ช่วงเวลานี้ไม่ใช่การสำรองข้อมูลเมื่อคืนที่ผ่านมาหากคุณต้องการ
  3. นำเข้าข้อมูลสำรองของคุณไปยังฐานข้อมูล "กู้คืน" ใหม่
  4. ไปที่nodeตารางค้นหาโหนดที่ถูกลบของคุณ หวังว่าคุณจะรู้หมายเลข แต่ถ้าคุณไม่คิดออกตอนนี้
  5. เลือกหนึ่งแถวที่ถูกลบและส่งออกผ่าน phpMyAdmin ควรมีเพียงหนึ่งแถว
  6. ตอนนี้ไปที่node_revisionsตาราง ค้นหา nid ของโหนดที่ถูกลบและส่งออก ควรมีอย่างน้อยหนึ่งแถว แต่อาจมีมากกว่านั้น ส่งออกทุกอย่างด้วยหมายเลขของคุณ
  7. กลับไปที่ฐานข้อมูลเว็บไซต์สดของคุณใน phpMyadmin
  8. นำเข้าสองไฟล์ที่คุณเพิ่งส่งออกจากการสำรองข้อมูล
  9. ตรวจสอบงานของคุณบนเว็บไซต์สด

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


ถ้าฉันไปที่nodeโต๊ะและไม่เห็นตัวเลขที่ลบไปตรงนั้นล่ะ? สิ่งนี้หมายความว่าสิ่งที่ดูน่ากลัว? เว็บไซต์นี้เป็น Drupal 8 โดยวิธีการ
MadPhysicist

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.