После удаления всех узлов, как мне сбросить идентификатор узла, чтобы снова начать с 1?
Я сгенерировал тонны фиктивного контента для тестирования, а затем удалил их все. Поскольку nid автоматически увеличивается, вновь созданный узел будет иметь nid последнего созданного nid +1.
Как я могу заставить nid снова начинаться с 1?
5 answers
Пожалуйста, не усекайте таблицу узлов просто так, к таблице узлов подключены некоторые другие таблицы, такие как node_revisions, последовательности, таблицы полей, таблицы таксономии и многое другое.
Безопасного способа сделать это не существует, это действительно зависит от вашего сайта, вам придется усечь и настроить все таблицы, в которых есть nid, включая таблицу последовательностей. Помните, что весьма вероятно, что ваш сайт станет непригодным для использования, поэтому не начинайте сначала без резервной копии.
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 из-за большого количества факторов. Я уверен, что этого можно было бы избежать, но компромисс между временем и кодом всегда есть.
Вы можете использовать модуль Удалить все с помощью следующих команд 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;
SQL-запрос: ALTER TABLE 'node' AUTO_INCREMENT=1;
Перед этим убедитесь, что вы удалили все узлы.
Вы можете обрезать таблицу узлов, но обратите внимание, что вы должны обрезать таблицу реляционных полей, если вы просто хотите начать увеличивать идентификатор с 1, вы можете использовать
ALTER TABLE `node` AUTO_INCREMENT=1