У меня есть друпал 7 сайтов, где хранятся ревизии узлов и полей. Я сохраняю ревизии для случая, когда по ошибке сохраняется новая неисправная версия, и я хочу вернуться обратно.
Но теперь я хочу очистить и оптимизировать базу данных, чтобы занимать меньше места на жестком диске.
Какие существуют способы удаления всех ревизий, кроме текущей, для всех узлов / полей сайта?
Еще нет стабильной версии для удаления Revision, но порт D7 уже в пути (не уверен, работает ли он вообще).
В этой теме кто-то предложил использовать VBO, чтобы изолировать ревизии и удалить их.
Если вы чувствуете себя комфортно с API, сделайте цикл по всем вашим узлам, извлеките ревизии с помощью
node_revision_list()
и удалите их с помощьюnode_revision_delete()
.В крайнем случае, и если вам нравится возиться с БД ( как я ), вы можете удалить строки ревизий
field_revision_*
иnode_revision
таблицы. Попробуй это:ВНИМАНИЕ: совсем не проверено!
Вы можете найти полный список таблиц ваших ревизий в
information_schema
базе данных:источник
WHERE node.vid = node_revision.vid
. Ошибки как есть. Возможно, укажите таблицы в запросе field_revision_body?В той же ситуации я использовал код ниже:
источник
Я сделал это для людей VBO (выполнить произвольный PHP), он удалит все ревизии (кроме текущей). Это зависит от встроенного порядка сортировки
node_revision_list()
, поэтому сделайте резервную копию вашей БД и проверьте желаемые результаты, прежде чем использовать данные в реальном времени .источник
Модуль удаления редакции узла теперь имеет стабильную версию.
источник