Manual:deleteRevision.php

From Linux Web Expert

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
File:OOjs UI icon notice-destructive.svg <translate> Warning:</translate> This script has been removed in MediaWiki 1.30 with commit phabricator:rMW918e4c394c424a287f32853b2967b0c8d4dfc97c.

Деталі

Файл deleteRevision.php — це скрипт технічного обслуговування для видалення однієї чи кількох ревізій шляхом переміщення їх до таблиці архіву. Через це редакція зникне з загальнодоступної версії вікі. Якщо це досягає очікуваного результату, скрипт deleteArchivedRevisions.php можна використовувати для повного видалення редакції з бази даних.

Щоб знайти ідентифікатор редакції, яку потрібно видалити, перегляньте URL-адресу кожної дати на сторінці історії. Це буде виглядати приблизно як http://yourwiki/index.php?title=Page_Title&oldid=1234. Ідентифікатором версії є oldid, 1234 у цьому прикладі. Цю редакцію можна видалити так:

php maintenance/deleteRevision.php 1234

Якщо ви хочете видалити кілька версій, розділіть їх пробілом:

php maintenance/deleteRevision.php 1234 5678

Видалення поточної сторінки перегляд

Цей скрипт також можна використовувати для видалення поточної версії сторінки. У цьому випадку скрипт подбає про оновлення запису сторінки, щоб знову вказати на правильну версію: він оновлює поле page_latest відповідної сторінки в таблиці сторінок. Він відсортує доступні версії за rev_timestamp і встановить page_latest на версію з найновішою міткою часу. Це гарантує збереження цілісності бази даних.

Кріплення rev_parent_id поле

Скрипт не оновлює поле rev_parent_id цієї версії, яка йде після видаленої. Таким чином, напр. різниці розмірів в історії сторінок будуть обчислюватися неправильно, оскільки MediaWiki все ще намагається обчислити їх на основі редакції, яку було видалено. Тому він отримує розмір 0 байт для цієї ревізії і, відповідно, неправильне значення для різниці розмірів.

Наразі це можна виправити лише вручну, оновивши вручну поле rev_parent_id версії, яке слідує за видаленим. У програмі відстеження помилок слід створити проблему, і цю проблему виправити належним чином.

Поки цю проблему не буде вирішено, можна використовувати такі запити, щоб виявити сторінки зі зламаним rev_parent_id:

SELECT * FROM revision where rev_parent_id != "0" and rev_parent_id NOT IN (
   SELECT DISTINCT (rev_id) FROM revision
) order by rev_page, rev_id;

Це відобразить список сторінок, які постраждали (rev_page) і проблемних версій (rev_id). Використовуйте значення з rev_page у такому запиті:

SET @seite = 4711;
# Displaying basic information about that page:
SELECT * FROM page where page_id = @seite;
# Selecting the revisions:
SELECT rev_page, rev_id, rev_parent_id, rev_user_text, rev_user_text FROM revision where rev_page=@seite order by rev_id;

Це відображає список ревізій для відповідної сторінки (тут для сторінки 4711), відсортований за rev_id. Прокрутіть униз до проблемної версії та зафіксуйте її значення rev_parent_id так, щоб воно вказувало на попередню ревізію (значення rev_id наступного старшого рядка в наборі результатів).

Батьківською версією першої версії сторінки завжди є версія 0.

Див. також

  • Extension:DeleteBatch — спеціальне розширення сторінки цього скрипту обслуговування.