Wygenerowałem mnóstwo atrapy zawartości do testów, a następnie usunąłem je wszystkie. Ponieważ nid jest auto-przyrostem, nowo utworzony węzeł będzie miał nid ostatnio utworzonego nid +1.
Jak mogę sprawić, że nid zacznie od 1?
Wygenerowałem mnóstwo atrapy zawartości do testów, a następnie usunąłem je wszystkie. Ponieważ nid jest auto-przyrostem, nowo utworzony węzeł będzie miał nid ostatnio utworzonego nid +1.
Jak mogę sprawić, że nid zacznie od 1?
Odpowiedzi:
Po prostu nie obcinaj tabeli węzłów w ten sposób, istnieje kilka innych tabel podłączonych do tabeli węzłów, takich jak wersje_węzłów, sekwencje, tabele pól, tabele taksonomii i wiele innych.
Nie ma bezpiecznego sposobu, aby to zrobić, to naprawdę zależy od Twojej witryny, musisz obciąć i dostosować wszystkie tabele, które mają nid, w tym tabelę sekwencji. Pamiętaj, że jest bardzo prawdopodobne, że Twoja witryna stanie się bezużyteczna, więc nie zaczynaj bez kopii zapasowej.
ALTER TABLE `node` AUTO_INCREMENT = 1;
PS - Inni, którzy odpowiedzieli na to pytanie: Właśnie usunąłem drobną kontrolę po usunięciu treści i powiązana treść jest rzeczywiście usuwana, tabele_węzłów i tabele_pole * są puste. node_delete mówi to samo - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7
Czasami w projektach migracyjnych podczas migracji z innych platform (np. ASP + MSSQL), czasami nie można zresetować NID z powodu wielu czynników. Jestem pewien, że można tego uniknąć, ale kompromis czas / kod zawsze istnieje.
Możesz użyć modułu Usuń wszystko, używając następujących poleceń drush:
Drupal 7
Usuń węzły wszystkich typów i zresetuj liczniki węzłów, wersji i komentarzy.
drush delete-all --reset
Drupal 8
Usuwa całą zawartość wszystkich typów.
drush delete-all-delete-content
I wtedy:
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;
możesz obciąć tabelę węzłów, ale zwróć uwagę, że musisz obciąć relacyjną tabelę pól, jeśli chcesz po prostu rozpocząć inkrementację od 1, możesz użyć
ALTER TABLE `node` AUTO_INCREMENT=1