Перейти к контенту

Восстановление/склейка пользовтелей


Рекомендуемые сообщения

Внимание! Только для опытных пользователей!

 

Внимание. Только основные таблицы !

 

Восстановление (например, после удаления):

 

Посты:

UPDATE ibf_posts SET author_id='ноый_ид' WHERE author_id=0 and author_name='имя_удалённого'

 

Топики:

UPDATE ibf_topics SET starter_id='новый_ид' WHERE starter_id=0 and starter_name='имя_удалённого'

 

Число постов:

Для форумов версии 1.х:

SELECT COUNT(p.pid) 
FROM ibf_posts p, ibf_forums f 
WHERE p.author_id='новый_ид' and p.forum_id=f.id and f.inc_postcount=1

 

Для форумов версии 2.х:

SELECT COUNT(p.pid) 
FROM ibf_posts p, ibf_forums f, ibf_topics t 
WHERE p.author_id='новый_ид' and p.topic_id=t.tid and t.forum_id=f.id and f.inc_postcount=1

 

Запоминаем выданное число и вписываем его вместо ххх в нижеследующий запрос (запрос для форумов любых версий):

UPDATE ibf_members SET posts='xxx' WHERE id='новый_ид'

Изменено пользователем Song
Ссылка на комментарий
Поделиться на других сайтах

Склейка двух пользователей в одного (ТОЛЬКО ОСНОВНЫЕ ТАБЛИЦЫ):

 

UPDATE ibf_members SET posts=posts+$posts_name2 WHERE id=$id_name1

UPDATE ibf_posts SET author_name=$author_name_name1, author_id=$author_id_name1  WHERE author_id=$author_id_name2

UPDATE ibf_topics SET starter_id=$starter_id_name1, starter_name=$starter_name_name1  WHERE starter_id=$starter_id_name2

UPDATE ibf_topics SET last_poster_id=$last_poster_id_name1, last_poster_name=$last_poster_name_name1  WHERE last_poster_id=$last_poster_id_name2

 

PM

 

Для 1.2, 1.3:

UPDATE ibf_messages SET from_id=$author_id_name1 WHERE from_id=$author_id_name2

UPDATE ibf_messages SET member_id=$author_id_name1 WHERE member_id=$author_id_name2

UPDATE ibf_messages SET recipient_id=$author_id_name1 WHERE recipient_id=$author_id_name2

 

Для 2.х:

 

посты PM:

UPDATE ibf_message_text SET msg_author_id=$msg_author_id_name1 WHERE msg_author_id=$msg_author_id_name2

 

базы заголовков сообщений ОТ КОГО:

UPDATE ibf_message_topics SET mt_from_id=$mt_from_id_name1 WHERE mt_from_id=$mt_from_id_name2

 

базы заголовков сообщений КОМУ

UPDATE ibf_message_topics SET mt_to_id=$mt_to_id_name1 WHERE mt_to_id=$mt_to_id_name2

 

 

Добавка для IPB 2.x:

 

аттачменты:

UPDATE ibf_attachments SET attach_member_id=$attach_member_id_name1 WHERE attach_member_id=$attach_member_id_name2

 

Во всех запросах переменные с name1 относятся к желаемому имени, c name2 - к удаляемому.

Ссылка на комментарий
Поделиться на других сайтах

  • 3 месяца спустя...

Song

Вернуть себе посты и темы получилось,но вот так вернуть себе свою репутацию и данные профиля?

Ссылка на комментарий
Поделиться на других сайтах

Эти запросы только основные.

Для всего остального нужны драйвера hands.sys и brain.vxd

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Song

Пытаюсь склеить двух пользователей, и чё-то не получается у меня ни хрена...

В общем, старик - дуб-дубом (с) ;)

 

Давай на примере первого запроса. Вот я его делаю, подставляя имена:

UPDATE ibf_members SET posts=posts+$posts_maksla WHERE id=$id_maks

Выдается ошибка. Либо:

Unknown column '$id_maks' in 'where clause'

Либо:

Unknown column '$posts_maksla' in 'field list'

На сколько я понимаю, я не правильно указываю переменные...

 

Разжуй, пожалуйста. :D

Ссылка на комментарий
Поделиться на других сайтах

:D

 

$id_maks - это id юзера с именем maks.

Если не знаешь, что это такое, лучше ничего не делай.

Ссылка на комментарий
Поделиться на других сайтах

Если не знаешь, что это такое, лучше ничего не делай.

Не боись, я на локалке. Весь обвешанный бэкапами... Надо жу учиться все-таки. ;)

 

ид пользователя я подставлял, тогда ругаться перестает:)

Но вот что с этим делать: posts+$posts_name2 не врубаюсь... Там что, просто количество постов пользователя прописать, или это "вынуть" из таблицы надо? :D[1128945834:1128946827]Так, первый вопрос схавало...

Теперь проблемка со вторым:) конкретно - с author_name=$author_name_name1 Если пишу author_name=Vasya, ругется...

Ссылка на комментарий
Поделиться на других сайтах

Все $*_name1 - это поля *, относящиеся к нику 1

Все $*_name2 - это поля *, относящиеся к нику 2

 

Например $author_name_name2 - это поле author_name относящеся к нику 2.

Строковые литералы должны заключаться в апострофы:

author_name='Vasya'

Ссылка на комментарий
Поделиться на других сайтах

Восстановление (например, после удаления):

 

Посты

UPDATE ibf_posts SET author_id='ноый_ид' WHERE author_id=-1 and author_name='имя_удалённого'

..............

 

Прошу прощения, не совсем понял, надо сначала нового юзера создать и уже его id подставлять в author_id='ноый_ид' ?

 

Если правильно, то на 3 шаге выдает ошибку:

 

Unknown column 'p.forum_id' in 'where clause'

 

Не подскажете в чем дело?

 

Версия - ipb 2.0.4

Ссылка на комментарий
Поделиться на других сайтах

Да пожалуйста поясните ...

Значит надо создать нового пользователя с таким же ником, а потом с ним операции осуществлять?

Ссылка на комментарий
Поделиться на других сайтах

Прошу прощения, не совсем понял, надо сначала нового юзера создать

Смотря что вы хотите сделать.

Если восстановить удалённого - то да, конечно, сначала надо создать нового, а потом к нему присовокупить все данные ранее удалённого.

Если склеить двух то никого соответственно создавать не надо, а после склейки ненужного удалить.

 

Если правильно, то на 3 шаге выдает ошибку:

http://www.sysman.ru/smiles/Main/wall.gif

млин, забыл что во 2-ом инвижине, нету этого поля !

Ок, сейчас подправлю самый первый пост этого топика.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...

Ничего не понял. Разьве просто запросами в БД старый пользователь не восстановится?

 

Хорошо, я так понял, что для восст. пользователя надо сперва создать нового.

Тогда вопрос:

Под тем же именем, что и был, или надо что-то другое?

Какой ID вводить, следующий после посл. на текущ. момент? ID удалённого пользователя я не помню.

 

Да, и что значит "Внимание. Только основные таблицы !"?

 

В общем так: Ник удалённого пользователя - West

создал нового пользователя - West1 (ID 583)

Сделал запрос

UPDATE ibf_posts SET author_id='583' WHERE author_id=-1 and author_name='West'

и

UPDATE ibf_topics SET starter_id='583' WHERE starter_id=-1 and starter_name='West'

Никаких изменений. Удалённый пользователь West так и отображается гостем.

Изменено пользователем Anthony
Ссылка на комментарий
Поделиться на других сайтах

Ничего не понял. Разьве просто запросами в БД старый пользователь не восстановится?

 

Хорошо, я так понял, что для восст. пользователя надо сперва создать нового.

Тогда вопрос:

Под тем же именем, что и был, или надо что-то другое?

Какой ID вводить, следующий после посл. на текущ. момент? ID удалённого пользователя я не помню.

 

Да, и что значит "Внимание. Только основные таблицы !"?

 

В общем так: Ник удалённого пользователя - West

создал нового пользователя - West1 (ID 583)

Сделал запрос

UPDATE ibf_posts SET author_id='583' WHERE author_id=-1 and author_name='West'

и

UPDATE ibf_topics SET starter_id='583' WHERE starter_id=-1 and starter_name='West'

Никаких изменений. Удалённый пользователь West так и отображается гостем.

В Song'овском запросе вместо «-1» попробуйте «0» :D

Ссылка на комментарий
Поделиться на других сайтах

>> Да, и что значит "Внимание. Только основные таблицы !"?

 

это значит что восстановятся не все данные, которые относились к старому пользователю. Только основные.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Из выше написанного, я понял, что восстановить удаленного можно с другим ID, правильно? А если мне надо восстановить именно ID? (удален пользователь №2, надо восстановить, плевать на ник и сообщения, важен сам факт наличия юзера №2)

 

Спасибо. Версия форума 2.1.х

Ссылка на комментарий
Поделиться на других сайтах

  • 5 месяцев спустя...

Извените наверно за глупые вопросы, я в этом не разбераюсь но оно мне надо. Не пойму:

1)как делать запрос:

UPDATE ibf_members SET posts=posts+$posts_name2 WHERE id=$id_name1

Что надо писать вместо нейм 1 и нейм2? Вообщем привидите пожалуйста пример с двумя пользователями. Там что надо их ники писать? С никами у меня впрочем не вышло.

2) если я просто выполню смену айди для 1 пользователя на айди пользователя с которым мне его надо соеденить это сработате как обьеденение? Если да то зачем тогда другие запросы?

Ссылка на комментарий
Поделиться на других сайтах

1)как делать запрос:UPDATE ibf_members SET posts=posts+$posts_name2 WHERE id=$id_name1

пример

UPDATE ibf_members SET posts= '254' WHERE id='10'

 

2) если я просто выполню смену айди для 1 пользователя на айди пользователя с которым мне его надо соеденить это сработате как обьеденение? Если да то зачем тогда другие запросы?

нет

 

а вообще читай тему, все давно разжевано

Ссылка на комментарий
Поделиться на других сайтах

Эти запросы только основные.

Для всего остального нужны драйвера hands.sys и brain.vxd

 

:D

 

Хотел заиметь головную боль? Ты её заимел ;)

Нафинг вообще было тему поднимать. В загловке понравилось: "Если не знаете - не лезтье!"

Блин, кто знает, тот и сам допрет, что к чему. Как я например :) Менсяц назад устанавливал мод. При переносе на действующий хост, забыл настроить. Из базы вытерло больше половины юзверьков. :) Зы... MySQL бекап выдрад таблицу members и скрипт который сравнивал с таблой на хосте, кого нить и привязывал сообщения к юзверям обратно. Просто не хотелось терять сообщений за сутки, поэтому чтал изгоялятся таким образом. Хотя мне всего то и надо было, что вернуть сообщения и темы владельцам. А потом провел пересчет статистики. И нафиг не стал востанавливать кол-во постов :)

 

Щас поискал. Нифига файлик уже потер так бы показал код.

Ссылка на комментарий
Поделиться на других сайтах

Зачем возвращять посты юзеру. После склейки достаточно ж сделать пересчёт количества постов и всё само вернётся. КАкой смысл в таком запросе?

 

А вообще в чём суть склейки? Надо поменять всем сообщениям с одним айди это йади на айди другого. Большеш ничего. Остальное делаеться пересчётом и обновлением. Если я не прав поправте.

Что ещё надо? Ещё голоса в опросах. ПМ и атачи мне не надо. На этом всё?

 

OverHerz если я задал вопрос то понятно что тему я читал. Более того, я тут каждый пост облизал по 5 раз.

 

Вообщем я сделал 2 запроса:

UPDATE ibf_posts SET author_name='Marvel', author_id='50'  WHERE author_id='15'

UPDATE ibf_voters SET member_id='50' WHERE member_id='15'

А потом сделал все пересчёты. Вроде всё ок. Теперь старого пользователя можно удалить. :D

Ссылка на комментарий
Поделиться на других сайтах

открою тайну - бывают такие форумы, которым больше 2-3 лет и на которых пересчет делать нельзя по многим причинам.

 

На этом всё?

топик_стартеры

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.