Как я могу восстановить ревизию, которую я удалил с помощью "php deleteRevision.php" - PullRequest
0 голосов
/ 31 августа 2018

Итак, я поиграл со своей страницей User: в моей настройке mediawiki, и я хотел очистить историю ревизий от тысяч пересмотров моей игры. Я узнал о deleteRevision.php , протестировал его на одной ревизии и, будучи довольным тем, как он работал, я использовал следующий javascript в консоли разработчика Chrome,

var links = document.querySelectorAll('.mw-changeslist-date')
var output = ""
for(var i = 0; i < links.length; i++)
{
    output += links[i].href+"\r\n"
}
console.log(output)

скопировал консольный журнал в Notepad ++ и выполнил штраф и заменил на постоянный URL-адрес, заменив его пробелом, поэтому, когда я добавлял файл сценария на передний план, он

php deleteRevision.php id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id

и затем в замазке я запустил скрипт, только вспомнив, что я хотел удалить все, кроме 1 * facepalm * и не обновлял базу данных до * facedesk *. теперь, когда я захожу на страницу пользователя: я получаю

Редакция № 0 страницы с именем «Пользователь: admean» не существует.

Это обычно вызывается переходом по устаревшей исторической ссылке на страницу, которая была удалена. Подробности можно найти в журнале удаления.

Я попытался запустить php undelete.php User:admean, и хотя он говорит, что это было успешно, я получаю ту же ошибку. я знаю, что данные все еще существуют, как в деталях для deleteRevision.php он говорит

Файл deleteRevision.php - это сценарий обслуживания для удаления одной или нескольких ревизий путем их перемещения в таблицу архива .

и проверяя таблицу, я вижу кучу записей о том, что общее количество - это количество ревизий, которые я удалил. хотя я не знаю, куда клонировать данные.

я также пробовал Special: Undelete, но независимо от того, сколько я выбрал ревизий, я получаю сообщение

Ошибка восстановления:
Неверная или отсутствующая редакция.

Возможно, у вас плохая ссылка или ревизия была восстановлена ​​или удалена из архива.

, что не имеет смысла, потому что количество записей в архивной таблице соответствует количеству удаленных ревизий, а их несколько тысяч

Так как я могу восстановить ревизию, которую я удалил с помощью php deleteRevision.php

1 Ответ

0 голосов
/ 06 августа 2019

Я сделал следующее, чтобы узнать мои таблицы: (при условии, что вы использовали MySQL, как я)

$ mysqlcheck -a -A -u username -p'password' --verbose

и он дал мне список имен таблиц, таких как:

wiki.archive                                   OK
wiki.page                                      OK

тогда я использовал

$  mysql -u username -p'password' --verbose

и он дал мне текст и подсказку:

MySQL>

поэтому я сказал ему команду объяснения:

mysql> explain wiki.page ;

--------------
explain wiki.page
--------------

+--------------------+---------------------+------+-----+---------+----------------+
| Field              | Type                | Null | Key | Default | Extra          |
+--------------------+---------------------+------+-----+---------+----------------+
| page_id            | int(8) unsigned     | NO   | PRI | NULL    | auto_increment |
| page_namespace     | int(11)             | NO   | MUL | NULL    |                |
| page_title         | varchar(255)        | NO   |     | NULL    |                |
| page_restrictions  | tinyblob            | NO   |     | NULL    |                |
| page_is_redirect   | tinyint(1) unsigned | NO   | MUL | 0       |                |
| page_is_new        | tinyint(1) unsigned | NO   |     | 0       |                |
| page_random        | double unsigned     | NO   | MUL | NULL    |                |
| page_touched       | char(14)            | NO   |     |         |                |
| page_latest        | int(8) unsigned     | NO   |     | NULL    |                |
| page_len           | int(8) unsigned     | NO   | MUL | NULL    |                |
| page_content_model | varbinary(32)       | YES  |     | NULL    |                |
| page_links_updated | varbinary(14)       | YES  |     | NULL    |                |
| page_lang          | varbinary(35)       | YES  |     | NULL    |                |
+--------------------+---------------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)

или

mysql> explain wiki.revision ;

--------------
explain wiki.revision
--------------

+--------------------+---------------------+------+-----+---------+----------------+
| Field              | Type                | Null | Key | Default | Extra          |
+--------------------+---------------------+------+-----+---------+----------------+
| rev_id             | int(8) unsigned     | NO   | PRI | NULL    | auto_increment |
| rev_page           | int(8) unsigned     | NO   | PRI | NULL    |                |
| rev_comment        | varbinary(767)      | NO   |     | NULL    |                |
| rev_user           | int(5) unsigned     | NO   | MUL | 0       |                |
| rev_user_text      | varchar(255)        | NO   | MUL |         |                |
| rev_timestamp      | char(14)            | NO   | MUL |         |                |
| rev_minor_edit     | tinyint(1) unsigned | NO   |     | 0       |                |
| rev_deleted        | tinyint(1) unsigned | NO   |     | 0       |                |
| rev_text_id        | int(8) unsigned     | NO   |     | NULL    |                |
| rev_parent_id      | int(10) unsigned    | YES  |     | NULL    |                |
| rev_len            | int(10) unsigned    | YES  |     | NULL    |                |
| rev_sha1           | varbinary(32)       | NO   |     |         |                |
| rev_content_format | varbinary(64)       | YES  |     | NULL    |                |
| rev_content_model  | varbinary(32)       | YES  |     | NULL    |                |
+--------------------+---------------------+------+-----+---------+----------------+

14 рядов в наборе (0,01 с)

Это подсказало мне столбцы таблицы, чтобы я мог использовать их в команде выбора. как:

mysql>  select * from vistapedia.revision where rev_id = 123456 ;

Надеюсь, это поможет.

...