2010-08-14 7 views
0

일부 노드는 더 이상 존재하지 않더라도 컨텐트 목록에 표시됩니다.노드 테이블에서 행 제거

클릭하면 빈 페이지가 나타납니다.

"Node"테이블에서 행을 삭제할 수 있는지, 아니면 다른 것을 정리해야하는지 궁금합니다.

감사

답변

3

첫 번째 : 관리 페이지에서 성능으로 이동하고 모든 캐시 지우기 버튼을 클릭하십시오. 문제가 해결되지 않으면 모든 contrib을 사용하지 않도록 설정하고 문제가 아직 있는지 확인하십시오. 그렇지 않다면, 하나씩 활성화 시키십시오. 그러면 어떤 contrib이 문제가되었는지 알 수 있습니다. 모듈의 발행 대기열에보고하십시오.

모듈을 비활성화해도 문제가 해결되지 않으면 drush을 다운로드하십시오. node_delete으로 노드를 직접 삭제하십시오. 예 (잘못된 노드의 꾸벅 꾸벅 인 경우 3) :

: 명령 줄에 익숙하지 않은 경우

drush php-eval 'node_delete(3);' 

, 당신은이 작은 PHP 파일 (드루팔의 루트에 넣어)와 동일한 기능을 수행 할 수 있습니다

include './includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
node_delete(3); 

데이터베이스에서 백업을 만들고 노드 테이블에서 노드를 삭제 한 다음 노드 관련 테이블 (nid 열이 있음)을 찾아 관련 항목을 삭제하십시오.

2

이 문제가 될 수 있지만하지 않을 수 있습니다

당신은 데이터베이스에서 직접 행을 삭제하지 않습니다. 나중에 데이터베이스가 어떤 모양인지 알 수있는 방법이 없습니다. 노드 ID는 많은 테이블에 존재하며 노드는 둘 이상의 테이블을 통해 분산됩니다.

nodeapi를 살펴보고 Drupal 프레임 워크를 사용하십시오. 노드 api는 데이터베이스 스키마를 올바르게 처리합니다.

참조 : http://api.drupal.org/api/function/node_delete/6

는 노드 ID를 알고있는 경우에 그래서, 당신은 node_delete 호출 할 수 있습니다.

0

Drupal 권한에 따라 노드를 삭제할 권한이있는 사용자 (예 : 기본 익명 사용자가 아닌 사용자 1)로 운영해야 할 수 있습니다. 당신은 사전 추가하여 node_delete() 호출하여이 작업을 수행 할 수있는 많은 노드를 삭제하고 브라우저를 통해 PHP 파일을 호출하는 경우

global $user; 
$user = user_load(1); 

또한 타임 아웃이 발생할 수 있습니다. 한가지 해결책은 명령 줄을 통해 PHP 파일을 호출하는 것입니다 (쉘 액세스 권한이있는 경우). 예를 들어

php -f custom-script.php 

많은 노드를 삭제하는 경우에도 메모리가 부족할 수 있습니다. 이것은 당신이 또한 custom-script.php에 명시 적 제한 시간을 설정하여 서버 시간 제한 문제를 해결할 수 있습니다 드루팔 6 주 내 검사에 대해 작동이 같은 스크립트의 호출에 대한

php -f custom-script.php -d memory_limit=512M 

를 PHP 메모리 제한을 늘립니다.

+0

node_delete()는 권한에 관계없이 노드를 삭제합니다. OP가 원시 SQL 쿼리를 사용하여 삭제하지 않도록 장려하십시오. 고아 노드 (anphan node) 때문에 미래에 많은 것들이 망가질 것입니다. –