Mam 7 witryn drupal, w których przechowuje wersje węzłów i pól. Sprawdzam zmiany w przypadku, gdy przez pomyłkę zapisano nową wadliwą wersję i chcę wrócić.
Ale teraz chcę wyczyścić i zoptymalizować bazę danych, aby zajmować mniej miejsca na dysku twardym.
Jakie są metody usuwania wszystkich wersji oprócz bieżącej dla wszystkich węzłów / pól witryny?
Nie ma jeszcze stabilnej wersji do usuwania wersji, ale zbliża się port D7 (nie jestem pewien, czy w ogóle działa).
W tym wątku ktoś zasugerował użycie VBO do izolacji wersji i ich usunięcia.
Jeśli nie masz ochoty korzystać z interfejsu API, wykonaj pętlę przez wszystkie węzły, pobierz wersje za pomocą
node_revision_list()
i usuń je za pomocąnode_revision_delete()
.W ostateczności i jeśli lubisz bawić się z DB ( tak jak ja ), możesz usunąć wiersze
field_revision_*
inode_revision
tabele wersji. Spróbuj tego:OSTRZEŻENIE: wcale nie testowane!
Możesz znaleźć pełną listę tabel poprawek w
information_schema
bazie danych:źródło
WHERE node.vid = node_revision.vid
. Błędy takie, jakie są. Być może podaj też tabele w zapytaniu field_revision_body?W tej samej sytuacji użyłem kodu poniżej:
źródło
Zrobiłem to dla ludzi VBO (wykonuj dowolne PHP), usunie wszystkie wersje (oprócz bieżących). Zależy to od wbudowanej kolejności sortowania
node_revision_list()
, dlatego przed użyciem danych na żywo wykonaj kopię zapasową bazy danych i sprawdź pożądane wyniki .źródło
Moduł usuwania wersji węzła ma teraz stabilną wersję.
źródło