मैं सभी नोड / फ़ील्ड संशोधन कैसे हटा सकता हूं?


17

मेरे पास एक ड्रुपल 7 साइटें हैं, जहां यह नोड और फील्ड रिविजन रखता है। मैं उस मामले के लिए संशोधन रखता हूं जहां गलती से एक नया दोषपूर्ण संस्करण सहेजा जाता है और मैं वापस वापस करना चाहता हूं।

लेकिन, अब मैं डेटाबेस को साफ करना और अनुकूलित करना चाहता हूं ताकि हार्ड डिस्क में कम जगह ले सके।

साइट के सभी नोड्स / फ़ील्ड के लिए मौजूदा एक को छोड़कर सभी संशोधनों को हटाने के कुछ तरीके क्या हैं?

जवाबों:


13

अपने संशोधनों को हटाने और प्रबंधित करने के लिए नोड संशोधन हटाएं मॉड्यूल का उपयोग करें । (मैं मॉड्यूल का अनुरक्षक हूं।)

नोड संशोधन हटाएं मॉड्यूल आपको अपनी पसंद के अनुसार नोड के संशोधनों का प्रबंधन करने की अनुमति देता है। यह नोड के लिए विशिष्ट संख्या में संशोधन रखने में आपकी सहायता करता है। यह मॉड्यूल आपको विशिष्ट सामग्री प्रकार के लिए संशोधन हटाने को लागू करने और विशिष्ट समय पर चलाने के लिए लचीलापन प्रदान करता है। आप नोड संशोधन हटाएं प्रशासन पृष्ठ से अपनी सेटिंग प्रबंधित कर सकते हैं।


क्या आप नोड संशोधन के साथ फ़ील्ड संशोधन हटा सकते हैं? मैं इस मॉड्यूल के साथ ऐसा करने के लिए किसी भी विकल्प नहीं दिखाई दे रहा
BlondeSwan

15

अभी तक संशोधन हटाने के लिए एक स्थिर रिलीज नहीं है, लेकिन एक डी 7 पोर्ट अपने रास्ते पर है (यह सुनिश्चित नहीं है कि अगर यह बिल्कुल कार्यात्मक है)।

इस सूत्र में किसी ने संशोधन को अलग करने और हटाने के लिए वीबीओ का उपयोग करने का सुझाव दिया ।

यदि आप एपीआई के साथ सहज महसूस करते हैं, तो अपने सभी नोड्स के माध्यम से एक लूप बनाएं, उपयोग करने वाले संशोधनों को पुनः प्राप्त करें node_revision_list()और उनका उपयोग करके हटा दें node_revision_delete()

एक अंतिम उपाय के रूप में और यदि आप DB ( जैसे मैं करते हैं ) के साथ खिलवाड़ करना पसंद करते हैं, तो आप रिव्यू की पंक्तियों को field_revision_*और node_revisionतालिकाओं में हटा सकते हैं । इसे इस्तेमाल करे:

चेतावनी: बिल्कुल भी परीक्षण नहीं किया गया!

DELETE FROM field_revision_body
WHERE NOT EXISTS (
  SELECT NULL
  FROM node
  WHERE vid = revision_id
);

DELETE FROM node_revision
WHERE NOT EXISTS (
  SELECT NULL
  FROM node
  WHERE node.vid = node_revision.vid
);

आप information_schemaडेटाबेस में अपने संशोधन तालिका की पूरी सूची पा सकते हैं :

SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE 'field_revision%'
AND TABLE_SCHEMA = 'your_database';

3
नोड संशोधन हटाएं मॉड्यूल में अब एक स्थिर रिलीज है।
फ्री रेडिकल

यह परीक्षण, मेरा मानना ​​है कि node_revision क्वेरी पर शर्त होनी चाहिए WHERE node.vid = node_revision.vid। त्रुटियों के रूप में है। शायद field_revision_body क्वेरी पर तालिकाओं को भी निर्दिष्ट करें?
डिजिटोफर

इस उत्तर में उल्लिखित संशोधन हटाए गए मॉड्यूल के बजाय नोड संशोधन हटाने का उपयोग करने की सलाह देते हैं, क्योंकि हमें एक ही काम करने के लिए 5 मॉड्यूल की आवश्यकता नहीं है। स्वीकृत उत्तर देखें।
mbomb007

2

उसी स्थिति में मैंने नीचे दिए गए कोड का उपयोग किया:

foreach (node_load_multiple($nids) as $node) {
  // Delete sub revisions.
  foreach (node_revision_list($node) as $vid => $revision) {
    node_revision_delete($vid);
  }
  // Delete archived revisions.
  revisioning_delete_archived_revisions($node);
}

1

मैंने वीबीओ लोगों के लिए इसे बनाया (मनमाना पीएचपी निष्पादित करें), यह सभी संशोधनों (वर्तमान को छोड़कर) को हटा देगा। यह अंतर्निहित क्रम पर निर्भर करता है node_revision_list(), इसलिए लाइव डेटा का उपयोग करने से पहले वांछित परिणामों के लिए अपने DB और परीक्षण का बैकअप लें

  krumo($entity);

  $revision_array = node_revision_list($entity);  
  $revision_array_ASC = array_reverse($revision_array, TRUE);
  krumo($revision_array_ASC);
  krumo(count($revision_array_ASC));

  foreach ($revision_array_ASC as $vid => $node) {
    $count = count($revision_array_ASC);
    if ($count > 1) {
          node_revision_delete($vid);
    }
  }

  $revision_array = node_revision_list($entity);  
  krumo($revision_array);

ऐसा लगता है कि आपको वर्तमान संशोधन (सॉर्ट, काउंट) को हटाने से बचने के लिए एक बड़ी परेशानी हो रही है। लेकिन पहले से ही \ n संशोधन \ n संशोधन वर्तमान संशोधन को हटाने से रोकता है।
dxvargas

0

नोड संशोधन हटाएं मॉड्यूल में अब एक स्थिर रिलीज है।

नोड संशोधन हटाएं मॉड्यूल आपको सामग्री प्रकारों के पुराने संशोधनों को ट्रैक और प्रून करने की सुविधा देता है। विशेषताएं:

  • सामग्री प्रकार के अनुसार संशोधन की अधिकतम राशि निर्धारित करें।
  • ड्रश, क्रोन रन या एक अलग अवधि (दैनिक, साप्ताहिक, आदि) पर चलाएं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.