J'ai un site drupal 7, où il conserve les révisions des nœuds et des champs. Je garde des révisions pour le cas où par erreur une nouvelle version défectueuse est enregistrée et je veux revenir en arrière.
Mais maintenant, je veux nettoyer et optimiser la base de données afin de prendre moins d'espace sur le disque dur.
Quelles sont les méthodes de suppression de toutes les révisions à l'exception de la révision actuelle, pour tous les nœuds / champs du site?
Il n'y a pas encore de version stable pour la suppression de la révision, mais un port D7 est en route (je ne sais pas du tout s'il est fonctionnel).
Dans ce fil, quelqu'un a suggéré d'utiliser VBO pour isoler les révisions et les supprimer.
Si vous vous sentez à l'aise avec l'API, faites une boucle à travers tous vos nœuds, récupérez les révisions en utilisant
node_revision_list()
et supprimez-les en utilisantnode_revision_delete()
.En dernier recours et si vous aimez jouer avec la base de données ( comme moi ), vous pouvez supprimer les lignes
field_revision_*
et lesnode_revision
tables des révisions . Essaye ça:ATTENTION: pas testé du tout!
Vous pouvez retrouver la liste complète des tableaux de vos révisions dans la
information_schema
base de données:la source
WHERE node.vid = node_revision.vid
. Erreurs telles quelles. Peut-être spécifier également les tables de la requête field_revision_body?Dans la même situation, j'ai utilisé le code ci-dessous:
la source
J'ai fait cela pour les gens VBO (exécutez PHP arbitraire), cela supprimera toutes les révisions (sauf la version actuelle). Cela dépend de l'ordre de tri intégré
node_revision_list()
, alors sauvegardez votre base de données et testez les résultats souhaités avant d'utiliser des données en direct .la source
Le module Node Revision Delete a désormais une version stable.
la source