Tüm düğüm / alan düzeltmelerini nasıl silebilirim?


17

Düğüm ve alan revizyonlarını koruyan bir drupal 7 sitem var. Yanlışlıkla yeni bir hatalı sürümün kaydedildiği ve geri dönmek istediğimde düzeltmeler yapıyorum.

Ancak, şimdi sabit diskte daha az yer kaplamak için veritabanını temizlemek ve optimize etmek istiyorum.

Sitenin tüm düğümleri / alanları için geçerli olanlar hariç tüm düzeltmeleri silmenin bazı yöntemleri nelerdir?

Yanıtlar:


13

Kullanım Düğüm Revizyon Sil silmek ve revizyonları yönetmek için modül. (Ben modülün koruyucusuyum.)

Düğüm Revizyon Silme modülü Düğümün revizyonlarını seçiminize göre yönetmenizi sağlar. Düğüm için belirli sayıda düzeltme yapmanıza yardımcı olur. Bu modül, belirli içerik türü için revizyon silme işlemini uygulama ve belirli bir zamanda çalıştırma esnekliği sağlar. Ayarlarınızı Düğüm Revizyonu Silme Yönetim Sayfasından yönetebilirsiniz.


Düğüm Düzeltme Silme ile alan düzeltmelerini silebilir misiniz? Bu modülle bunu yapmak için herhangi bir seçenek göremiyorum
BlondeSwan

15

Revizyon silme için henüz kararlı bir sürüm yok, ancak bir D7 bağlantı noktası geliyor (işlevsel olup olmadığından emin değilim).

Bu yazıda birisi revizyonları izole etmek ve silmek için VBO kullanılmasını önerdi .

API ile rahat ediyorsanız, tüm düğümleriniz arasında bir döngü yapın, kullanarak düzeltmeleri alır ve kullanarak node_revision_list()silin node_revision_delete().

Son çare olarak ve DB ( benim gibi ) ile uğraşmak isterseniz revizyonların satırları field_revision_*ve node_revisiontabloları silebilirsiniz . Bunu dene:

UYARI: hiç test edilmedi!

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
);

Revizyon tablolarınızın tam listesini information_schemaveritabanında bulabilirsiniz:

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

3
Düğüm Revizyon Silme modülünün artık kararlı bir sürümü var.
Serbest Radikal

Bu test, node_revision sorgusu koşul olması gerektiğine inanıyorum WHERE node.vid = node_revision.vid. Hatalar olduğu gibi. Belki de field_revision_body sorgusundaki tabloları belirtin?
digitgopher

Bu cevapta belirtilen Revizyon Silme modülü, aynı şeyi yapan 5 modüle ihtiyacımız olmadığından, bunun yerine Düğüm Revizyonu Sil'in kullanılmasını önerir. Kabul edilen cevaba bakınız.
mbomb007

2

Aynı durumda aşağıdaki kodu kullandım:

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

Ben VBO millet için yapılan (keyfi PHP yürütmek), (mevcut hariç) tüm düzeltmeleri silecektir. Bu, yerleşik sıralama düzenine dayanır node_revision_list(), bu nedenle canlı verilerinizi kullanmadan önce DB'nizi yedekleyin ve istenen sonuçlar için test edin .

  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);

Geçerli düzeltmeyi (sırala, say) silmekten kaçınmak için büyük bir sorun yaşıyor gibi görünüyor. Ancak node_revision_delete, mevcut düzeltmenin silinmesini zaten engelliyor.
dxvargas

0

Düğüm Revizyon Silme modülünün artık kararlı bir sürümü var.

Düğüm Revizyonu Silme modülü, içerik türlerinin eski düzeltmelerini izlemenizi ve bu ayarları düzeltmenizi sağlar. Özellikleri:

  • İçerik türü başına tutulacak maksimum düzeltme miktarını tanımlayın.
  • Drush, cron run veya farklı bir süre (günlük, haftalık, vb.)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.