자한 기르가 올바른 길 위에 있습니다. 리비전 정보를 통해 90 %를 얻을 수 있습니다.
이 예에서는 노드 테이블 만이 위조 된 삭제의 영향을 받았다고 가정합니다. 당신은 노드 객체를 사용하여이 다음 부분을 할 수
$result = db_query('SELECT nid, MAX(vid) AS vid, uid, title, `timestamp`, `status`, `comment`, promote, sticky FROM {node_revision}
WHERE nid NOT IN (SELECT nid FROM {node}) GROUP BY nid');
관련 노드를 가지고 있지만, 주어진 우리가 노드 항목을 필요로 내가 직접 그것을 할 것하지 않는 수정하는 방법을 사용
시작 DB를 :
foreach ($result as $record) {
//You might be able to get the created date by looking at the earliest revision
$min_result = db_query('SELECT nid, MIN(vid) as vid, `timestamp` FROM {node_revision} WHERE nid = :nid', array(':nid' => $record->nid));
$created = $min_result->fetchColumn(4);
$new_node = db_insert('node')
->fields(array(
'nid' => $record->nid,
'vid' => $record->vid,
'type' => 'YOU CANNOT GET THIS',
'language' => $record->language,
'title' => $record->title,
'uid' => $record->uid,
'created' => $created,
'updated' => $record->timestamp,
//you get the idea...
));
}
나는 개정을 사용하여 콘텐츠 유형을 검색 할 수있는 방법을 찾을 수 없습니다, 그래서 솔루션의 약점이다. 필드 데이터가 모두 그대로 있다고 가정하면 노드를 다시 가져와야합니다.
* 면책 조항 :이 코드는 내 경험과 작은 인터넷 검색을 기반으로하므로 여기에 제시된 문제와 유사한 환경을 가짜로 만들 수 없습니다. 이것은 테스트되지 않았지만 여전히 가치가 있기를 바랍니다. Downvotes는 겸허하게 받아 들였다.
전체 데이터베이스가있는 경우 백업 및 마이그레이션 모듈을 사용하여 안전하게 데이터를 내보내거나 가져올 수 있습니다. https://www.drupal.org/project/backup_migrate – Fky
@Fky, 의견을 주셔서 감사합니다. 내 요구 사항은 누락 된 항목에 대한 백엔드 mysql 데이터베이스의 데이터를 다시 생성하는 것입니다. – Vijayakumar
데이터베이스에 node_revision 테이블이 있는지 확인하십시오. 데이터베이스 백업이 없다고 가정하면 삭제 된 노드를 복구 할 수 없습니다. 나중에 다른 모듈을 사용하여 데이터베이스 백업을 유지하고 관리자 패널에서 이벤트를 모니터링하며 노드 개정을 유지할 수 있습니다. http://drupal.stackexchange.com/questions/645/is-it-possible-to -restore-a-deleted-node –