Очистка элементов из базы

Теги:
 
+
-
edit
 

llirik

новичок
Обновил сервер, все данные успешно перенёс (ошибок не было) - сервер запускается тоже без ошибок, но почему-то чистит НУЖНЫЕ элементы из базы. При первом запуске очистилось 368 вещей, более 100 чаров, 975(!) записей о квестах, и несколько элементов из character_shortcuts и character_macroses.

Можете объяснить, по какому принципу сервер удаляет эти данные? Можно ли как-то выключить это автоматическое удаление?
 
+
-
edit
 
code java
  1.                         int cleanCount = 0;
  2.                         int curCount = 0;
  3.  
  4.                         conn = L2DatabaseFactory.getInstance().getConnection();
  5.                         Statement stmt = conn.createStatement();
  6.  
  7.                         if((curCount = stmt.executeUpdate("DELETE FROM character_friends WHERE character_friends.char_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  8.                         {
  9.                                 cleanCount += curCount;
  10.                                 _log.info("Cleaned " + curCount + " elements from table character_friends.");
  11.                         }
  12.                         if((curCount = stmt.executeUpdate("DELETE FROM character_friends WHERE character_friends.friend_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  13.                         {
  14.                                 cleanCount += curCount;
  15.                                 _log.info("Cleaned " + curCount + " elements from table character_friends.");
  16.                         }
  17.                         if((curCount = stmt.executeUpdate("DELETE FROM character_hennas WHERE character_hennas.char_obj_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  18.                         {
  19.                                 cleanCount += curCount;
  20.                                 _log.info("Cleaned " + curCount + " elements from table character_hennas.");
  21.                         }
  22.  
  23.                         if((curCount = stmt.executeUpdate("DELETE FROM character_macroses WHERE character_macroses.char_obj_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  24.                         {
  25.                                 cleanCount += curCount;
  26.                                 _log.info("Cleaned " + curCount + " elements from table character_macroses.");
  27.                         }
  28.                         if((curCount = stmt.executeUpdate("DELETE FROM character_quests WHERE character_quests.char_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  29.                         {
  30.                                 cleanCount += curCount;
  31.                                 _log.info("Cleaned " + curCount + " elements from table character_quests.");
  32.                         }
  33.                         if((curCount = stmt.executeUpdate("DELETE FROM character_recipebook WHERE character_recipebook.char_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  34.                         {
  35.                                 cleanCount += curCount;
  36.                                 _log.info("Cleaned " + curCount + " elements from table character_recipebook.");
  37.                         }
  38.                         if((curCount = stmt.executeUpdate("DELETE FROM character_shortcuts WHERE character_shortcuts.char_obj_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  39.                         {
  40.                                 cleanCount += curCount;
  41.                                 _log.info("Cleaned " + curCount + " elements from table character_shortcuts.");
  42.                         }
  43.                         if((curCount = stmt.executeUpdate("DELETE FROM character_skills WHERE character_skills.char_obj_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  44.                         {
  45.                                 cleanCount += curCount;
  46.                                 _log.info("Cleaned " + curCount + " elements from table character_skills.");
  47.                         }
  48.                         if((curCount = stmt.executeUpdate("DELETE FROM character_effects_save WHERE character_effects_save.char_obj_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  49.                         {
  50.                                 cleanCount += curCount;
  51.                                 _log.info("Cleaned " + curCount + " elements from table character_effects_save.");
  52.                         }
  53.                         if((curCount = stmt.executeUpdate("DELETE FROM character_skills_save WHERE character_skills_save.char_obj_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  54.                         {
  55.                                 cleanCount += curCount;
  56.                                 _log.info("Cleaned " + curCount + " elements from table character_skills_save.");
  57.                         }
  58.                         if((curCount = stmt.executeUpdate("DELETE FROM character_subclasses WHERE character_subclasses.char_obj_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  59.                         {
  60.                                 cleanCount += curCount;
  61.                                 _log.info("Cleaned " + curCount + " elements from table character_subclasses.");
  62.                         }
  63.                         if((curCount = stmt.executeUpdate("DELETE FROM character_variables WHERE character_variables.obj_id = '0';")) > 0)
  64.                         {
  65.                                 cleanCount += curCount;
  66.                                 _log.info("Cleaned " + curCount + " elements from table character_variables.");
  67.                         }
  68.                         if((curCount = stmt.executeUpdate("DELETE FROM clan_data WHERE clan_data.leader_id NOT IN (SELECT obj_Id FROM characters);")) > 0)
  69.                         {
  70.                                 cleanCount += curCount;
  71.                                 _log.info("Cleaned " + curCount + " elements from table clan_data.");
  72.                         }
  73.                         if((curCount = stmt.executeUpdate("DELETE FROM clan_subpledges WHERE clan_subpledges.clan_id NOT IN (SELECT clan_id FROM clan_data);")) > 0)
  74.                         {
  75.                                 cleanCount += curCount;
  76.                                 _log.info("Cleaned " + curCount + " elements from table clan_subpledges.");
  77.                         }
  78.                         if((curCount = stmt.executeUpdate("DELETE FROM ally_data WHERE ally_data.leader_id NOT IN (SELECT clan_id FROM clan_data);")) > 0)
  79.                         {
  80.                                 cleanCount += curCount;
  81.                                 _log.info("Cleaned " + curCount + " elements from table ally_data.");
  82.                         }
  83.                         if((curCount = stmt.executeUpdate("DELETE FROM pets WHERE pets.item_obj_id NOT IN (SELECT object_id FROM items);")) > 0)
  84.                         {
  85.                                 cleanCount += curCount;
  86.                                 _log.info("Cleaned " + curCount + " elements from table pets.");
  87.                         }
  88.                         if((curCount = stmt.executeUpdate("DELETE FROM siege_clans WHERE siege_clans.clan_id NOT IN (SELECT clan_id FROM clan_data);")) > 0)
  89.                         {
  90.                                 cleanCount += curCount;
  91.                                 _log.info("Cleaned " + curCount + " elements from table siege_clans.");
  92.                         }
  93.                         if((curCount = stmt.executeUpdate("DELETE FROM items WHERE owner_id NOT IN (SELECT obj_Id FROM characters) AND owner_id NOT IN (SELECT clan_id FROM clan_data) AND owner_id NOT IN (SELECT objId FROM pets) AND owner_id NOT IN (SELECT id FROM npc);")) > 0)
  94.                         {
  95.                                 cleanCount += curCount;
  96.                                 _log.info("Cleaned " + curCount + " elements from table items.");
  97.                         }
  98.  
  99.                         if((curCount = stmt.executeUpdate("DELETE FROM `clan_wars` where clan1 not in (select clan_id FROM clan_data) or clan2 not in (select clan_id FROM clan_data);")) > 0)
  100.                         {
  101.                                 cleanCount += curCount;
  102.                                 _log.info("Cleaned " + curCount + " elements from table clan_wars.");
  103.                         }
  104.  
  105.                         if((curCount = stmt.executeUpdate("UPDATE characters SET clanid=0,pledge_type=0,pledge_rank=0,lvl_joined_academy=0,apprentice=0 WHERE clanid!=0 AND clanid NOT IN (SELECT clan_id FROM clan_data);")) > 0)
  106.                                 _log.info("Updated " + curCount + " elements from table characters.");
  107.                         if((curCount = stmt.executeUpdate("UPDATE clan_data SET ally_id=0 WHERE ally_id!=0 AND ally_id NOT IN (SELECT ally_id FROM ally_data);")) > 0)
  108.                                 _log.info("Updated " + curCount + " elements from table clan_data");
  109.  
  110.                         stmt.close();
  111.                         _log.info("Total cleaned " + cleanCount + " elements from database.");
  112.                 }
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  
+
-
edit
 

llirik

новичок
code text
  1. if((curCount = stmt.executeUpdate("DELETE FROM items WHERE owner_id NOT IN (SELECT obj_Id FROM characters) AND owner_id NOT IN (SELECT clan_id FROM clan_data) AND owner_id NOT IN (SELECT objId FROM pets) AND owner_id NOT IN (SELECT id FROM npc);")) > 0)
  2.             {
  3.                 cleanCount += curCount;
  4.                 _log.info("Cleaned " + curCount + " elements from table items.");
  5.             }

Пишу этот запрос прямо в mysql, возвращает 0 рядов. Почему сервер удаляет 368 предметов?
Можно ли как-то вообще отключить эту функцию?
 
Это сообщение редактировалось 09.03.2007 в 17:17
+
-
edit
 
AD Реклама Google — средство выживания форумов :)
+
-
edit
 
Нет, нельзя. Она не настраивается.
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru