После удаления всех узлов, как мне сбросить идентификатор узла, чтобы снова начать с 1?


Я сгенерировал тонны фиктивного контента для тестирования, а затем удалил их все. Поскольку nid автоматически увеличивается, вновь созданный узел будет иметь nid последнего созданного nid +1.

Как я могу заставить nid снова начинаться с 1?

 16
7
Author: kiamlaluno, 2011-03-19

5 answers

Пожалуйста, не усекайте таблицу узлов просто так, к таблице узлов подключены некоторые другие таблицы, такие как node_revisions, последовательности, таблицы полей, таблицы таксономии и многое другое.

Безопасного способа сделать это не существует, это действительно зависит от вашего сайта, вам придется усечь и настроить все таблицы, в которых есть nid, включая таблицу последовательностей. Помните, что весьма вероятно, что ваш сайт станет непригодным для использования, поэтому не начинайте сначала без резервной копии.

 12
Author: Luis, 2011-03-19 19:22:46
ALTER TABLE `node` AUTO_INCREMENT = 1;

P.S - Другие, кто ответил на этот вопрос: Я только что провел небольшую проверку после удаления контента, и связанный контент действительно удален, таблицы node_revisions и field_* пусты. node_delete говорит то же самое - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7

Иногда в проектах миграции при миграции с других платформ (например. ASP + MSSQL), иногда становится неизбежным сброс nid из-за большого количества факторов. Я уверен, что этого можно было бы избежать, но компромисс между временем и кодом всегда есть.

 16
Author: Dipen, 2016-04-27 12:41:34

Вы можете использовать модуль Удалить все с помощью следующих команд 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;
 3
Author: schneidolf, 2017-05-31 09:09:36

SQL-запрос: ALTER TABLE 'node' AUTO_INCREMENT=1;

Перед этим убедитесь, что вы удалили все узлы.

 2
Author: beeleg, 2012-03-04 02:40:01

Вы можете обрезать таблицу узлов, но обратите внимание, что вы должны обрезать таблицу реляционных полей, если вы просто хотите начать увеличивать идентификатор с 1, вы можете использовать

ALTER TABLE  `node` AUTO_INCREMENT=1
 0
Author: shahab, 2014-10-01 08:22:17