it-swarm.dev

모든 노드 / 필드 개정을 어떻게 삭제합니까?

노드 및 필드 개정을 유지하는 drupal 7 개 사이트가 있습니다. 실수로 새 결함이있는 버전이 저장되어 되돌리려는 경우에 대한 개정을 유지합니다.

그러나 이제는 데이터베이스를 정리하고 최적화하여 하드 디스크의 공간을 덜 사용하려고합니다.

사이트의 모든 노드/필드에 대해 현재 개정판을 제외한 모든 개정판을 삭제하는 방법은 무엇입니까?

17
john

노드 개정 삭제 모듈을 사용하여 개정을 삭제하고 관리하십시오. (나는 모듈의 관리자입니다.)

Node 개정 삭제 모듈을 사용하면 선택에 따라 Node의 개정을 관리 할 수 ​​있습니다. 노드의 특정 개정 수를 유지하는 데 도움이됩니다. 이 모듈은 특정 컨텐츠 유형에 대한 개정 삭제를 적용하고 특정 시간에 실행할 수있는 유연성을 제공합니다 Node 개정 삭제 관리 페이지)에서 설정을 관리 할 수 ​​있습니다.

13
Kaushal Kishore

개정 삭제 에 대한 안정적인 릴리스는 아직 없지만 D7 포트 가 진행 중입니다 (작동 여부는 확실하지 않음).

이 스레드에서 누군가는 VBO 을 사용하여 개정판을 격리하고 삭제하도록 제안했습니다.

API에 익숙하다고 생각되면 모든 노드를 반복하고 node_revision_list() 를 사용하여 개정을 검색하고 node_revision_delete() 를 사용하여 삭제하십시오. .

최후의 수단으로 DB를 망쳐 놓는 것을 좋아한다면 ( like like do ) 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';
15
tostinni

같은 상황에서 아래 코드를 사용했습니다.

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);
}
2
mrded

VBO 사람들 (임의의 임의 PHP 실행)을 위해이 작업을 수행하면 모든 개정 (현재 제외)이 삭제됩니다. 이것은 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);
1
Merrick

노드 개정 삭제 이제 모듈이 안정적으로 릴리스되었습니다.

Node 개정 삭제 모듈을 사용하면 이전 버전의 컨텐츠 유형을 추적하고 정리할 수 있습니다.

  • 컨텐츠 유형마다 유지할 최대 개 정량을 정의하십시오.
  • Drush, cron run 또는 다른 기간 (매일, 매주 등)에서 실행하십시오.
0
Juampy NR