Скрипты очистки базы

oxeo

Проверенные
Сообщения
111
Реакции
22
Баллы
1,715
Привет.
После массового удаления нодов в базе остались записи их тредов и постов. Есть ли готовый скрипт для очистки базы от таких ненужных записей? Если кто помнит в VB такой функционал был - "удалить сообщения без тем".
Написать запрос к базе не очень сложно, но вдруг уже готовый есть.
 
Ну ок. Буду сам писать.
Вот уже удалил ненужные треды:
delete from xf_thread where node_id not in ('1','2','5','11','14','21','22','27','29');

О! Лайки!
Ок. Вот еще запрос для следующего шага (удаление беспризорных постов):
delete from xf_post where xf_post.thread_id not in (select xf_thread.thread_id from xf_thread);

Ну и тем кто это будет использовать - надеюсь не нужно напоминать что перед любыми манипуляциями с базой нужно делать ее бэкап. По крайней мере бэкап затрагиваемых таблиц.
 
После массового удаления нодов в базе остались записи их тредов и постов.
А все почему? А потому что в базе лазали. Сейчас не 2004 год, не времена vbulletin и надобности лезть в базу данных форума. Вы вот удалили теперь темы так грязно - а я вам напомню, что есть еще связи с числом сообщений у пользователей, вложениями и многим другим. А у вас уже и id'шников тем нет наверняка.

Все удаления разделов - ТОЛЬКО через админку. Или датаврайтеры.
 
А все почему? А потому что в базе лазали.
Кстати нет.

есть еще связи с числом сообщений у пользователей
Да, есть. Обновил.
update xf_user as u set message_count=(select count (*) from xf_post as p left join xf_thread as t on (t.thread_id=p.thread_id) where p.user_id=u.user_id and p.message_state='visible' and t.discussion_state='visible' group by p.user_id);
 
  • Мне нравится
Реакции: Hope
Кстати нет.


Да, есть. Обновил.
update xf_user as u set message_count=(select count (*) from xf_post as p left join xf_thread as t on (t.thread_id=p.thread_id) where p.user_id=u.user_id and p.message_state='visible' and t.discussion_state='visible' group by p.user_id);
Кстати да.
Все удаления разделов - ТОЛЬКО через админку. Или датаврайтеры.
Разработчики не из-за своей прихоти делали датаврайтеры, а как раз вот для такого удаления.
 
oxeo, значит какие-то аддоны понавешаны которые сломали дефолтный датаврайтер. В чистом движке такого нет.
Да будет так. Время покажет есть такая проблема в движке или нет.
 
Да будет так. Время покажет есть такая проблема в движке или нет.
Не помню, вроде пятый год на XenForo, с версии 1.0 начал. Проверил базу - никаких "потерянных" записей нет. Но я и не сомневался - причина проблемы была понятна сразу при виде методов решения.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу