Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Дополнения к Lineage 2 Java серверам/[help] Удаление не использоваемых аккаунтов
Search

[help] Удаление не использоваемых аккаунтов

27 replies485 viewsCurrently viewing: 1
S
smart-one

User

Участник

Posts: 82

На форуме с: 06/02/2008

Репутация: +8

Рейтинг: 0

· 08/01/2009, 01:40 AM

Доброго времени суток!
Хотел попросить кого-то выложить SQL запрос на удаление аккаунтов которые уже не используются 3 месяца.

Зарание благодарен!

0
М
Макс

User

Новичок

Posts: 10

На форуме с: 04/30/2009

Рейтинг: 0

· 08/01/2009, 02:27 AM

Скрипт для очистки базы ява сервера:
суть простая, удаляются чары и все вещи и прочее ниже определенного времени или не заходившие с какого то времени.

SQL
UPDATE characters SET online=0;
DELETE FROM characters WHERE lastAccess < 1191211200;
DELETE FROM accounts WHERE lastactive < 1191211200;
DELETE FROM characters WHERE level < 75;
DELETE FROM characters WHERE account_name NOT IN (SELECT login FROM accounts); DELETE FROM accounts WHERE login NOT IN (SELECT account_name FROM characters); DELETE FROM clan_data WHERE leader_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM clan_privs WHERE clan_id NOT IN (SELECT clan_id FROM clan_data); DELETE FROM clan_subpledges WHERE clan_id NOT IN (SELECT clan_id FROM clan_data); DELETE FROM clan_wars WHERE clan1 NOT IN (SELECT clan_id FROM clan_data); DELETE FROM clan_wars WHERE clan2 NOT IN (SELECT clan_id FROM clan_data); DELETE FROM auction_bid WHERE bidderId NOT IN (SELECT clan_id FROM clan_data); DELETE FROM clanhall_functions WHERE hall_id NOT IN (SELECT ID FROM clanhall WHERE ownerId <> '0');
UPDATE clanhall SET paidUntil='0' WHERE ownerId NOT IN (SELECT clan_id FROM clan_data); UPDATE clanhall SET ownerId='0' WHERE ownerId NOT IN (SELECT clan_id FROM clan_data); DELETE FROM account_data WHERE account_name NOT IN (SELECT login FROM accounts); DELETE FROM account_data WHERE account_name NOT IN (SELECT account_name FROM characters); DELETE FROM account_data WHERE value NOT IN (SELECT obj_Id FROM characters); DELETE FROM items WHERE loc <> 'clanwh' and owner_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM items WHERE loc = 'clanwh' and owner_id NOT IN (SELECT clan_id FROM clan_data); DELETE FROM character_skills WHERE char_obj_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM character_skills_save WHERE char_obj_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM character_shortcuts WHERE char_obj_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM character_recipebook WHERE char_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM character_quests WHERE char_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM character_macroses WHERE char_obj_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM character_hennas WHERE char_obj_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM character_friends WHERE char_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM character_subclasses WHERE char_obj_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM couples WHERE player1Id NOT IN (SELECT obj_Id FROM characters); DELETE FROM couples WHERE player2Id NOT IN (SELECT obj_Id FROM characters); DELETE FROM pets where item_obj_id not in (SELECT object_id FROM items); DELETE FROM seven_signs WHERE char_obj_id NOT IN (SELECT obj_Id FROM characters); DELETE FROM forums WHERE forum_owner_id <> '0' AND forum_owner_id NOT IN (SELECT clan_id FROM clan_data);


P.S Не моё. (Взято из Библиотеки La2base) smile3.gif

0
S
smart-one

User

Участник

Posts: 82

На форуме с: 06/02/2008

Репутация: +8

Рейтинг: 0

· 08/01/2009, 02:36 AM

спасибо...но это у меня тоже есть) мне важно было узнать как выставить ласт ексес именно на 3 месяца! тоесть 3 месяца уже не использоваемые аккаунты. Если ктото знает - с меня пасибка!

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 08/04/2009, 08:51 AM

smart-one: как выставить ласт ексес именно на 3 месяца! тоесть 3 месяца уже не использоваемые аккаунты.


ласт ексес на 3 месяца, это не 3 месяца не используемый аккаунт, а 3 месяца неиспользуемый чар. 3 месяца не используемый аккаунт - lastactive

Для таблицы accounts и промежутка в 3 месяца запрос будет примерно такой:

Код
DELETE FROM accounts WHERE datediff(curdate(),date(from_unixtime(floor(lastactive/1000))))>90


- date_diff(date1,date2) - возвращает разницу в днях между date1 и date2
- curdate() - возвращает текущую дату
- date (datetime) - возвращает дату из datetime
- from_unixtime(unixtimestamp) возвращает sqltimestamp
90, соответственно, примерное количество дней в 3 месяцах

0
S
smart-one

User

Участник

Posts: 82

На форуме с: 06/02/2008

Репутация: +8

Рейтинг: 0

· 08/04/2009, 12:18 PM

DELETE FROM accounts WHERE datediff(curdate(),date(from_unixtime(floor(lastactive/1000))))>90 - что означает 1000 перед 90?

и можно точно? чтоб удалить все аки которыми не пользуются уже 3 месяца надо сделать этот запрос в точности?

DELETE FROM accounts WHERE datediff(curdate(),date(from_unixtime(floor(lastactive/1000))))>90

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 08/04/2009, 12:58 PM

Cервер записывает в поле lastactive время в миллисекундах, функция from_unixtime использует время в секундах. Поэтому значение поля в запросе надо делить на 1000.
Этот запрос удалит аккаунты, которыми не пользуются уже 90 дней (т.е. условно 3 месяца).

Дальше надо будет выполнить запросы, которые писали выше - чтобы удалить всех чаров, которые остались без акков; все вещи которые остались без хозяев; кланы, которые остались без КЛ и так далее.

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

0
S
smart-one

User

Участник

Posts: 82

На форуме с: 06/02/2008

Репутация: +8

Рейтинг: 0

· 08/04/2009, 01:34 PM

Спасибо!

Только можно ещё просьбу - напишите полный запрос для того чтоб удалить все аки (на 90 дней) и всё что было с ними связано...с меня 1000 раз пасибка!

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 08/04/2009, 01:40 PM

tiesto: на которые и которыми не заходят 2 недели и месяц. Помогайте профи) Тема гуд...


2 недели = 14 дней. Месяц=30 дней.

tynukk же написал запросы на удаление всего и вся, у чего нет хозяина - начиная с четвёртого DELETE - просто почитайте и разберитесь, что там удаляется.

0
tiesto
tiesto

User

Бывалый

Posts: 265

На форуме с: 03/24/2009

Репутация: +138

Рейтинг: 0

· 08/04/2009, 02:10 PM

_http://www.unixtimestamp.com/index.php

Вот ссылко на перевод впемени в юникс. Я надыбал... думаю поможет кому-то.
Я переделываю запрос, дошел до ошибки и немогу разрулить, вот скрин:



Юзаю Ему-Рт и такой код

UPDATE characters SET online=0;
DELETE FROM characters WHERE lastAccess < 1248066000;
DELETE FROM accounts WHERE lastactive < 1248066000;
DELETE FROM characters WHERE level < 75;
DELETE FROM characters WHERE account_name NOT IN (SELECT login FROM accounts);
DELETE FROM accounts WHERE login NOT IN (SELECT account_name FROM characters);
DELETE FROM clan_data WHERE leader_id NOT IN (SELECT charId FROM characters);
DELETE FROM clan_privs WHERE clan_id NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM clan_subpledges WHERE clan_id NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM clan_wars WHERE clan1 NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM clan_wars WHERE clan2 NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM auction_bid WHERE bidderId NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM clanhall_functions WHERE hall_id NOT IN (SELECT ID FROM clanhall WHERE ownerId <> '0');
UPDATE clanhall SET paidUntil='0' WHERE ownerId NOT IN (SELECT clan_id FROM clan_data);
UPDATE clanhall SET ownerId='0' WHERE ownerId NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM accounts WHERE account_name NOT IN (SELECT login FROM accounts);
DELETE FROM accounts WHERE account_name NOT IN (SELECT account_name FROM characters);
DELETE FROM accounts WHERE value NOT IN (SELECT charId FROM characters);
DELETE FROM items WHERE loc <> 'clanwh' and owner_id NOT IN (SELECT charId FROM characters);
DELETE FROM items WHERE loc = 'clanwh' and owner_id NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM character_skills WHERE char_obj_id NOT IN (SELECT charId FROM characters);
DELETE FROM character_skills_save WHERE char_obj_id NOT IN (SELECT charId FROM characters);
DELETE FROM character_shortcuts WHERE char_obj_id NOT IN (SELECT charId FROM characters);
DELETE FROM character_recipebook WHERE char_id NOT IN (SELECT charId FROM characters);
DELETE FROM character_quests WHERE char_id NOT IN (SELECT charId FROM characters);
DELETE FROM character_macroses WHERE char_obj_id NOT IN (SELECT charId FROM characters);
DELETE FROM character_hennas WHERE char_obj_id NOT IN (SELECT charId FROM characters);
DELETE FROM character_friends WHERE char_id NOT IN (SELECT charId FROM characters);
DELETE FROM character_subclasses WHERE char_obj_id NOT IN (SELECT charId FROM characters);
DELETE FROM couples WHERE player1Id NOT IN (SELECT charId FROM characters);
DELETE FROM couples WHERE player2Id NOT IN (SELECT charId FROM characters);
DELETE FROM pets where item_obj_id not in (SELECT object_id FROM items);
DELETE FROM seven_signs WHERE char_obj_id NOT IN (SELECT charId FROM characters);
DELETE FROM forums WHERE forum_owner_id <> '0' AND forum_owner_id NOT IN (SELECT clan_id FROM clan_data);

— АдмиралЪ О_о

0
tiesto
tiesto

User

Бывалый

Posts: 265

На форуме с: 03/24/2009

Репутация: +138

Рейтинг: 0

· 08/04/2009, 02:36 PM

Пишет неизвестная колонка, но когда ранее било ошибку на колонку obj_Id которой у меня нету, а вместо нее есть charId , сменив я решил проблемку, потом account_data я сменил на accounts. Терь оно кричит на колонку account_name в таблице чаров... но она у меня там есть!!! Перелопатил все варианты, на которые я способен) Прогеры спасайте)

— АдмиралЪ О_о

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 08/04/2009, 04:26 PM

Ты лучше показывай отдельный запрос, на который выдаёт ошибку, саму ошибку и структуру таблиц, которые участвуют в запросе.. так цитировать легче :).
Последний запрос который у тебя на скрине, наверное, неправильный - в таблице accounts нет поля account_name. Во всяком случае, у меня. Поэтому запрос DELETE from accounts WHERE account_name NOT IN (SELECT login FROM accounts) не выполнится.

0
tiesto
tiesto

User

Бывалый

Posts: 265

На форуме с: 03/24/2009

Репутация: +138

Рейтинг: 0

· 08/04/2009, 08:24 PM

VlLight: Ты лучше показывай отдельный запрос, на который выдаёт ошибку, саму ошибку и структуру таблиц, которые участвуют в запросе.. так цитировать легче :).
Последний запрос который у тебя на скрине, наверное, неправильный - в таблице accounts нет поля account_name. Во всяком случае, у меня. Поэтому запрос DELETE from accounts WHERE account_name NOT IN (SELECT login FROM accounts) не выполнится.



DELETE FROM characters WHERE account_name NOT IN (SELECT login FROM accounts);

Все строки указанные сдесь у меня имеются в таблицах, вот скрин таблиц accounts и characters








если перевести достловно
удалить чаров не имеющих имени аккаунта (смотреть колонку login в таблице accounts) так???? Дак хули оно не пашет???

— АдмиралЪ О_о

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 08/05/2009, 05:37 AM

А что пишет в ошибке после этого запроса?

0
tiesto
tiesto

User

Бывалый

Posts: 265

На форуме с: 03/24/2009

Репутация: +138

Рейтинг: 0

· 08/05/2009, 06:35 AM

Кароч раздуплился еле...

Вот работающий запрос на сборки Ему-Рт и Ему


UPDATE characters SET online=0;
DELETE FROM characters WHERE lastAccess < 1248469200;
DELETE FROM accounts WHERE lastactive < 1248469200;
DELETE FROM characters WHERE level < 75;
DELETE FROM characters WHERE account_name NOT IN (SELECT login FROM accounts);
DELETE FROM accounts WHERE login NOT IN (SELECT account_name FROM characters);
DELETE FROM clan_data WHERE leader_id NOT IN (SELECT charId FROM characters);
DELETE FROM clan_privs WHERE clan_id NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM clan_subpledges WHERE clan_id NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM clan_wars WHERE clan1 NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM clan_wars WHERE clan2 NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM auction_bid WHERE bidderId NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM clanhall_functions WHERE hall_id NOT IN (SELECT ID FROM clanhall WHERE ownerId <> '0');
UPDATE clanhall SET paidUntil='0' WHERE ownerId NOT IN (SELECT clan_id FROM clan_data);
UPDATE clanhall SET ownerId='0' WHERE ownerId NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM items WHERE loc <> 'clanwh' and owner_id NOT IN (SELECT charId FROM characters);
DELETE FROM items WHERE loc = 'clanwh' and owner_id NOT IN (SELECT clan_id FROM clan_data);
DELETE FROM character_skills WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM character_skills_save WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM character_shortcuts WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM character_recipebook WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM character_quests WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM character_macroses WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM character_hennas WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM character_friends WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM character_subclasses WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM couples WHERE player1Id NOT IN (SELECT charId FROM characters);
DELETE FROM couples WHERE player2Id NOT IN (SELECT charId FROM characters);
DELETE FROM pets where item_obj_id not in (SELECT object_id FROM items);
DELETE FROM seven_signs WHERE charId NOT IN (SELECT charId FROM characters);
DELETE FROM forums WHERE forum_owner_id <> '0' AND forum_owner_id NOT IN (SELECT clan_id FROM clan_data);

— АдмиралЪ О_о

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 08/05/2009, 06:46 AM

Вместо

Код
DELETE FROM accounts WHERE lastactive < 1248469200;

Удобнее всё-таки использовать
Код
DELETE FROM accounts WHERE datediff(curdate(),date(from_unixtime(floor(lastactive/1000))))>90

Можно в удобном виде поставить количество дней и не париться с пересчётом в миллисекунды.
Код
DELETE FROM characters WHERE level < 75;

Удалит всех чаров ниже 75 уровня - оно вам надо? :)

0
S
smart-one

User

Участник

Posts: 82

На форуме с: 06/02/2008

Репутация: +8

Рейтинг: 0

· 08/05/2009, 12:50 PM

DELETE FROM characters WHERE datediff(curdate(),date(from_unixtime(floor(lastAccess/1000))))>90

для персонажей так?

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 08/05/2009, 01:22 PM

Угумс. Удалит чара, которым не играли больше указанного срока.

0
S
smart-one

User

Участник

Posts: 82

На форуме с: 06/02/2008

Репутация: +8

Рейтинг: 0

· 08/05/2009, 03:57 PM

сделал так как писалось но пишет что запрос не коректен( все колонки правильно вписаны....

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 08/05/2009, 04:27 PM

Скопипасть запрос просто

0
wwwMATRIXwww
wwwMATRIXwww

User

Бывалый

Posts: 417

На форуме с: 04/26/2008

Репутация: +325

Рейтинг: 0

· 08/07/2009, 05:21 PM

Ещё можно удалить аккаунты , которые создали , но ни разу не заходили на них.
Navicat->accounts->Filter Wizard->

lastIp-contains=is Null

жмёшь ctrl+r

далее у тебя появятся акки , на которые ни разу не заходили.
далее разворачиваешь окошко , дабы было удобнее ( окно навиката )
Жмёшь CTRL+A и удаляешь.
Я таким способом удалил 14 000 аккаунтов

— ы

0
Войдите или зарегистрируйтесь чтобы ответить