Я создал тонны фиктивного контента для тестирования, а затем удалил их все. Поскольку nid - автоинкремент, у вновь созданного узла будет nid последнего созданного nid +1.
Как я могу сделать nid начать с 1 снова?
Я создал тонны фиктивного контента для тестирования, а затем удалил их все. Поскольку nid - автоинкремент, у вновь созданного узла будет nid последнего созданного nid +1.
Как я могу сделать nid начать с 1 снова?
Ответы:
Plase не усекает таблицу узлов просто так, есть некоторые другие таблицы, связанные с таблицей узлов, такие как node_revisions, последовательности, таблицы полей, таблицы таксономии и многое другое.
Безопасного способа сделать это не существует, это действительно зависит от вашего сайта, вам придется усекать и корректировать все таблицы, в которых есть nid, включая таблицу последовательностей. Помните, что весьма вероятно, что ваш сайт станет непригодным для использования, поэтому не запускайте сначала без резервной копии.
ALTER TABLE `node` AUTO_INCREMENT = 1;
PS - Другие, кто ответил на этот вопрос: я только что сделал небольшую проверку после удаления контента, и связанный контент действительно удален, таблицы node_revisions и field_ * пусты. node_delete говорит то же самое - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7
Иногда в проектах миграции, когда вы переходите с других платформ (например, ASP + MSSQL), иногда становится неизбежным сбросить nid из-за множества факторов. Я уверен, что этого можно избежать, но компромисс между временем и кодом всегда есть.
Вы можете использовать модуль Delete all со следующими командами drush:
Drupal 7
Удалите узлы всех типов и сбросьте счетчики узлов, ревизий и комментариев.
drush delete-all --reset
Drupal 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;
Вы можете усечь таблицу узлов, но обратите внимание, что вы должны усекать таблицу реляционных полей, если вы просто хотите начать увеличение идентификатора с 1, вы можете использовать
ALTER TABLE `node` AUTO_INCREMENT=1