모든 노드를 삭제 한 후 1부터 다시 시작하도록 노드 ID를 어떻게 재설정합니까?


17

테스트를 위해 수많은 더미 콘텐츠를 생성 한 다음 모두 삭제했습니다. nid는 자동 증가이므로 새로 작성된 노드에는 마지막으로 작성된 nid +1의 nid가 있습니다.

nid를 1부터 다시 시작하려면 어떻게해야합니까?


6
문제는 왜 그렇게하고 싶은가입니다. 어떤 nid가 사용되는지는 중요하지 않으며 어쨌든 항상 엄격하게 순차적이라는 보장은 없습니다.
Berdir

3
Berdir에 동의합니다. 어떤 모듈도 첫 번째 노드의 ID가 1이라는 사실에 의존해서는 안됩니다. 이것은 사용자의 사용자 ID와 유사합니다. ID가 0과 1 인 사용자의 존재에 의존 할 수 있습니다.이 ID는 항상 Drupal에서 생성됩니다. 설치하는 동안 ID가 3 인 사용자 계정의 존재에 의존해서는 안됩니다. 다른 모듈은 익명 사용자 또는 수퍼 유저의 계정을 삭제할 수 있지만 그러한 모듈의 버그로 간주해야합니다.
kiamlaluno

답변:


13

Plase는 노드 테이블을 자르지 않습니다. node_revisions, 시퀀스, 필드 테이블, 분류법 테이블 등과 같은 노드 테이블에 연결된 다른 테이블이 있습니다.

이 작업을 수행하는 안전한 방법은 없습니다. 실제로 사이트에 따라 다르므로 시퀀스 테이블을 포함하여 nid가있는 모든 테이블을 자르고 조정해야합니다. 사이트를 사용할 수 없게 될 가능성이 높으므로 먼저 백업하지 않고 시작하지 마십시오.


1
모든 노드가 삭제되면 노드에 대한 참조가 포함 된 다른 테이블도 비어 있어야합니다. 말했다, 어떤 모듈도 첫 번째 노드의 ID가 1이라는 사실에 의존해서는 안된다.
kiamlaluno

16
ALTER TABLE `node` AUTO_INCREMENT = 1;

추신-이 질문에 대답 한 다른 사람들 : 나는 내용을 삭제 한 후 약간의 검사를했는데 관련 내용이 실제로 삭제되고 node_revisions 및 field_ * 테이블이 비어 있습니다. node_delete 같은 말한다 - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7

다른 플랫폼 (예 : ASP + MSSQL)에서 마이그레이션 할 때 마이그레이션 프로젝트에서 여러 요인으로 인해 nid를 재설정 할 수없는 경우가 있습니다. 나는 그것이 피할 수 있다고 확신하지만 시간 / 코드 트레이드 오프가 항상 있습니다.


몇 달이 걸리는 대규모 마이그레이션 프로젝트를 진행했습니다. 내가 개발 및 테스트에 사용한 사이트에는 여기저기서 몇 가지 새로운 노드가 추가되어 최신 콘텐츠가 있습니다. 모든 노드와 주석을 롤백하고 AUTO_INCREMENT = 1로 설정해야한다고 생각합니다. 마이그레이션을 위해이 작업을 수행 한 사람이 특히 Drupal 7의 다른 문제에 부딪 쳤는지 궁금합니다.
Webdrips

2

SQL 쿼리 : ALTER TABLE 'node' AUTO_INCREMENT=1;

이 작업을 수행하기 전에 모든 노드를 삭제했는지 확인하십시오.


2

다음 drush 명령으로 모두 모듈 삭제를 사용할 수 있습니다 .

드루팔 7

모든 유형의 노드를 삭제하고 노드, 개정 및 주석 카운터를 재설정하십시오.

drush delete-all --reset

드루팔 8

여길 봐

모든 유형의 모든 내용을 삭제합니다.

drush delete-all-delete-content

그리고:

ALTER TABLE `node` AUTO_INCREMENT=1;
ALTER TABLE `node_revision` AUTO_INCREMENT=1;
ALTER TABLE `node_field_data` AUTO_INCREMENT=1;
ALTER TABLE `node_field_revision` AUTO_INCREMENT=1;

0

노드 테이블을자를 수는 있지만 관계형 필드 테이블을 잘라야한다는 점에주의하십시오. 증명 ID를 1에서 시작하려면 다음을 사용할 수 있습니다

ALTER TABLE  `node` AUTO_INCREMENT=1

절단 노드 테이블은 노드 삭제시 발생하는 모든 후크를 무시하므로 현명한 아이디어가 아닙니다. 예를 들어, 수정본 테이블에 데이터를 남겨두고 수정본을 작성하려고하는 이미 사용 된 nid에 도달하면 Drupal이 충돌합니다.
Mołot

@ Mołot 노드와 리비전 노드 테이블을 자르면 아무런 문제가 없습니다. 나는 그것을 테스트하고 문제가 없다
shahab

특정 설정에서이 방법이 성공했다는 것이 항상 작동한다는 것을 증명하지는 않습니다.
Mołot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.