it-swarm.asia

هل من الممكن استعادة العقدة المحذوفة؟

بينما يتم الاحتفاظ بالمراجعات ومن السهل العودة إلى المراجعة السابقة للعقدة ، كنت أتساءل عما إذا كان من الممكن استعادة عقدة تم حذفها بالفعل من قبل المستخدم؟

17
Palmin

إذا كان لديك نسخة احتياطية لقاعدة البيانات (يجب عليك ؛) يمكنك استعادة نسخة قديمة من الموقع واسترجاعها بهذه الطريقة.

يعطي دروبال المستخدمين تحذيرًا واضحًا تمامًا من أن حذف العقدة نهائي ، وهناك مربع حوار للتأكيد.

20
Chris Cohen

ما يقوله كريس. الرمز يقرأ

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

... المحذوفة تعني حقًا حذفها.

لمنع مثل هذه الحوادث ، قد ترغب في تقييد أذونات المستخدم حتى لا يتمكن المستخدمون من الحذف ، ولكن فقط العقد غير المنشورة. لن تظهر العقد غير المنشورة على موقعك (بافتراض أن موقعك قد تم بناؤه بشكل صحيح) ولكنها تظل متاحة في قاعدة البيانات.

19
marcvangend

نعم هناك العديد من الحلول لذلك.

  • الأول هو استخدام النسخ الاحتياطية الكاملة التي سبق أن ذكرها Chris هنا. هذا هو الأصعب خاصة إذا كانت العقدة تحتوي على حقول معقدة.
  • باستخدام https://drupal.org/project/recover الوحدة النمطية التي تراقب
  • باستخدام https://drupal.org/project/entity_soft_delete الوحدة النمطية. لقد أنشأت نوعًا من سلة المحذوفات/سلة المهملات للعقد/الكيانات ، لذلك عندما يتم حذف عقدة معينة ، فلن تتم إزالتها من قاعدة البيانات فقط تتغير حالتها إلى حذفها. لذلك لا يزال بإمكان المشرف رؤيتها أو حتى استخدامها ، وإذا لزم الأمر ، قم بتغيير حالتها إلى وضعها الطبيعي أو حذفها نهائيًا
2
Sina Salek

أنا متأخر ، ولكن الإجابة هي استخدام وحدة النسخ الاحتياطي للكيان https://www.drupal.org/project/entity_backup

0
Rajveer gangwar

فيما يلي اقتراح بناء على ما قاله كريس أن إجابة المهندسين العكسيين @ marcvangend. أحب استخدام phpMyAdmin ، ولكن يمكنك القيام بهذه العملية نفسها باستخدام سطر الأوامر إذا كنت تحب ذلك بشكل أفضل.

مثل الإجابات الأخرى ، يفترض هذا أن لديك نسخة احتياطية من قاعدة البيانات الخاصة بك. لا عذر لعدم وجود وحدات رائعة مثل Backup & Migrate بالخارج.

  1. إنشاء قاعدة بيانات MySQL فارغة جديدة تسمى "استعادة" أو "اختبار" أو شيء مماثل
  2. قم بإنشاء نسخة احتياطية يدوية جديدة حتى تتمكن من العودة إلى هذه اللحظة ، وليس النسخ الاحتياطي الليلة الماضية إذا كنت بحاجة إلى ذلك
  3. قم باستيراد النسخة الاحتياطية إلى قاعدة بيانات "الاستعادة" الجديدة
  4. انتقل إلى الجدول node ، وابحث عن العقدة المحذوفة. آمل أنك تعرف معرفتك ، ولكن إذا لم تعرفها الآن.
  5. حدد الصف الذي تم حذفه وتصديره عبر phpMyAdmin. يجب أن يكون هناك صف واحد فقط.
  6. اذهب الآن إلى node_revisions الطاولة. ابحث على nid الخاص بك العقدة المحذوفة والتصدير. يجب أن يكون هناك صف واحد على الأقل ، ولكن يمكن أن يكون أكثر. تصدير كل شيء مع معرفتك.
  7. ارجع إلى قاعدة بيانات موقعك المباشر في phpMyadmin
  8. قم باستيراد الملفين اللذين قمت بتصديرهما للتو من النسخة الاحتياطية
  9. تحقق من عملك على الموقع المباشر

سيسمح لك استخدام هذه الطريقة باستعادة العقدة المفردة من النسخة الاحتياطية دون فقدان أي تغييرات على قاعدة البيانات منذ آخر نسخة احتياطية. إذا لم تكن مهتمًا بهذا الأمر ولا تعتقد شيئًا إلا أن الحذف قد حدث منذ النسخ الاحتياطي الأخير ، فسيكون من الأسهل إجراء استعادة كاملة لآخر نسخ احتياطي للخضوع للعملية المذكورة أعلاه.

0
squarecandy