Основываясь на SQL-запросах Стана Соколова, мне удалось устранить ужасный беспорядок в моей вики - я не наблюдал за ним в течение полугода, и он был полон спама. Я должен был очистить его от конкретной даты.
Если вы собираетесь попробовать то же самое, пожалуйста, сделайте резервную копию в первую очередь - эти sql запросы могут разрушить вашу вики, убить котят и вызвать беременность.
В этом примере «tr_» - мой префикс, «189» - последний хороший идентификатор страницы, «41» - последний хороший идентификатор пользователя, а «20130215152547» - первая дата входа в спам.
#Update page state to last good before the date UPDATE tr_page p SET p.page_latest=( SELECT MAX(r.rev_id) FROM tr_revision r WHERE r.rev_page=p.page_id AND rev_timestamp <20130215152547) WHERE p.page_id IN (SELECT r2.rev_page FROM tr_revision r2 WHERE rev_timestamp >=20130215152547); #Update page length to match actual UPDATE tr_page p SET p.page_len=( SELECT r.rev_len FROM tr_revision r WHERE r.rev_page=p.page_id AND r.rev_id=p.page_latest ); #Clean up spam revisions DELETE FROM tr_revision WHERE rev_timestamp >=20130215152547; #Clear recent changes DELETE FROM tr_recentchanges WHERE rc_timestamp >=20130215152547; #Block all new bad users from ever entering wiki with this login UPDATE tr_user SET user_password = '', user_newpassword = '', user_email = '', user_token = '' WHERE user_id>41; #Delete pages, staring from the last good id DELETE FROM tr_page WHERE page_id>189; #Also, you will need TO clean TABLE tr_pagelinks. #You will have to do it manually. It's easy, use some editor #like PHPMyAdmin or SQLyog #Clean cache DELETE FROM `tr_objectcache`; DELETE FROM `tr_querycache`; DELETE FROM `tr_querycachetwo`;