Après avoir supprimé tous les nœuds, comment réinitialiser l'ID de nœud pour recommencer à partir de 1?


17

J'ai généré des tonnes de contenu factice pour les tests, puis les ai tous supprimés. Comme nid est auto-incrémenté, le nœud nouvellement créé aura un nid du dernier nid +1 créé.

Comment refaire nid à partir de 1?


6
La question est de savoir pourquoi voudrait faire cela. Peu importe le nid utilisé, et il n'y a aucune garantie qu'il soit toujours strictement séquentiel de toute façon.
Berdir

3
Je suis d'accord avec Berdir; aucun module ne doit s'appuyer sur le fait que le premier nœud a un ID égal à 1. Ceci est similaire à l'ID utilisateur des utilisateurs: vous pouvez compter sur la présence d'un utilisateur avec un ID égal à 0 et à 1, qui sont toujours créés à partir de Drupal lors de l'installation, mais vous ne devez pas compter sur la présence d'un compte utilisateur avec un ID égal à 3. D'autres modules pourraient supprimer le compte de l'utilisateur anonyme ou du super-utilisateur, mais cela devrait être considéré comme un bug de ces modules.
kiamlaluno

Réponses:


13

Plase ne tronque pas la table de nœuds comme ça, il y a d'autres tables connectées à la table de nœuds, comme node_revisions, séquences, tables de champs, tables de taxonomie, et bien d'autres.

Il n'y a aucun moyen sûr de le faire, cela dépend vraiment de votre site, vous devrez tronquer et ajuster toutes les tables qui ont un nid, y compris la table des séquences. N'oubliez pas, il est très probable que votre site devienne inutilisable, alors ne commencez pas sans une sauvegarde en premier.


1
Je m'attendrais à ce que les autres tables contenant des références aux nœuds soient vides également, lorsque tous les nœuds sont supprimés. Dit que, aucun module ne devrait s'appuyer sur le fait que le premier nœud a un ID égal à 1.
kiamlaluno

16
ALTER TABLE `node` AUTO_INCREMENT = 1;

PS - D'autres qui ont répondu à cette question: je viens de faire une petite vérification après la suppression du contenu et le contenu associé est en effet supprimé, les tables node_revisions et field_ * sont vides. node_delete dit la même chose - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7

Parfois, sur les projets de migration lorsque vous migrez à partir d'autres plates-formes (ex. ASP + MSSQL), il devient parfois inévitable de réinitialiser le nid en raison de nombreux facteurs. Je suis sûr que cela pourrait être évité mais le compromis temps / code est toujours là.


J'ai vécu un projet de migration massif qui prend des mois. Le site que j'ai utilisé pour le développement et les tests a ajouté de nouveaux nœuds ici et là, ce qui arrose une partie du contenu le plus récent. Je pense que vous auriez besoin de restaurer tous les nœuds et commentaires et de définir AUTO_INCREMENT = 1 pour les deux. Je me demande si quelqu'un qui a fait cela pour les migrations a rencontré d'autres problèmes, en particulier pour Drupal 7?
Webdrips

2

Requête SQL: ALTER TABLE 'node' AUTO_INCREMENT=1;

Assurez-vous d'avoir supprimé tous les nœuds avant de procéder.


2

Vous pouvez utiliser le module Supprimer tout avec les commandes drush suivantes:

Drupal 7

Supprimez les nœuds de tous types et réinitialisez les compteurs de nœuds, de révision et de commentaires.

drush delete-all --reset

Drupal 8

vois ici

Supprime tout le contenu de tous les types.

drush delete-all-delete-content

Puis:

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

vous pouvez tronquer la table des nœuds mais, faites attention, vous devez tronquer la table des champs relationnels, si vous voulez simplement démarrer l'incrémentation de l'identifiant à partir de 1, vous pouvez utiliser

ALTER TABLE  `node` AUTO_INCREMENT=1

La troncature de la table des nœuds ignorera tous les crochets qui devraient se déclencher lors de la suppression du nœud, ce n'est donc pas une bonne idée. Par exemple, il laissera les données dans la table des révisions, et Drupal se bloquera lorsqu'il atteindra le nid déjà utilisé essayant de créer la révision.
Mołot

@ Mołot si vous tronquez le nœud et la table des nœuds de révision, vous n'avez aucun problème. Je le teste et je n'ai pas de problème
shahab

Le fait que dans votre configuration spécifique cette méthode ait réussi ne prouve pas qu'elle fonctionnera toujours.
Mołot,
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.