Minion
Enthusiast
SHORT STORY: i run a small private server, my database has gotten out of control and i want to greatly reduce the number of "fake" and "unused" accounts.. Im not a genius when it comes to sql but i do pick up quick.
GOAL: i want to dump accounts not active since `X` date, and all data associated with that account.
Did alot of searching and found this on another thread. so all credits and respect to them.
now after reading through it this should accomplish exactly what i want. so i run it.
Problem:
that is the error i get (first half of error log deleted to save space) any ideas?
GOAL: i want to dump accounts not active since `X` date, and all data associated with that account.
Did alot of searching and found this on another thread. so all credits and respect to them.
Code:
SET @REALMD := 'auth';
SET @CHARACTERS := 'charlk';
SET @DATE := '2012-12-12 00:00:00';
DELETE FROM auth.account WHERE `last_login`< '2012-12-30 00:00:00;
TRUNCATE TABLE `account_data`;
DELETE FROM `arena_team` WHERE captainGuid NOT IN (SELECT guid FROM @CHARACTERS );
DELETE FROM `arena_team_member` WHERE arenaTeamId NOT IN (SELECT arenaTeamId FROM `arena_team` );
DELETE FROM `arena_team_member` WHERE guid NOT IN (SELECT guid FROM @CHARACTERS );
DELETE FROM `auctionhouse` WHERE itemowner NOT IN ( SELECT guid FROM @CHARACTERS );
TRUNCATE TABLE `character_account_data`;
DELETE FROM @CHARACTERS WHERE ( `account` ) NOT IN ( SELECT id FROM @REALMD.`account` );
DELETE FROM `account_instance_times` WHERE ( `accountId` ) NOT IN ( SELECT id FROM @REALMD.`account` );
DELETE FROM `character_action` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_achievement` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_achievement_progress` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_arena_stats` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_aura` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_battleground_data` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_battleground_random` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_equipmentsets` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_feed_log` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_gifts` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_glyphs` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_homebind` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_stats` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
TRUNCATE TABLE `character_instance`;
DELETE FROM `character_inventory` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_pet` WHERE ( owner ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_queststatus` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_queststatus_daily` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_queststatus_weekly` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_reputation` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_social` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_talent` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_spell` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `character_skills` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
TRUNCATE TABLE `character_spell_cooldown`;
DELETE FROM `character_tutorial` WHERE ( account ) NOT IN ( SELECT id FROM @REALMD.`account` );
DELETE FROM `corpse` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
TRUNCATE TABLE `creature_respawn`;
TRUNCATE TABLE `gameobject_respawn`;
TRUNCATE TABLE `gm_tickets`;
TRUNCATE TABLE `groups`;
TRUNCATE TABLE `group_instance`;
TRUNCATE TABLE `group_member`;
DELETE FROM `guild_bank_eventlog` WHERE ( guildid ) NOT IN ( SELECT guildid FROM `guild` );
DELETE FROM `guild_bank_item` WHERE ( guildid ) NOT IN ( SELECT guildid FROM `guild` );
DELETE FROM `guild_bank_right` WHERE ( guildid ) NOT IN ( SELECT guildid FROM `guild` );
DELETE FROM `guild_bank_tab` WHERE ( guildid ) NOT IN ( SELECT guildid FROM `guild` );
DELETE FROM `guild_eventlog` WHERE ( guildid ) NOT IN ( SELECT guildid FROM `guild` );
DELETE FROM `guild_member` WHERE ( guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `guild_member` WHERE ( guildid ) NOT IN ( SELECT guildid FROM `guild` );
DELETE FROM `guild_rank` WHERE ( guildid ) NOT IN ( SELECT guildid FROM `guild` );
TRUNCATE TABLE `instance`;
TRUNCATE TABLE `instance_reset`;
DELETE FROM `item_refund_instance` WHERE ( player_guid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `item_refund_instance` WHERE `item_guid` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `item_soulbound_trade_data` WHERE `itemGuid` NOT IN (SELECT `guid` FROM `item_instance`);
TRUNCATE TABLE `lag_reports`;
DELETE FROM `mail` WHERE (receiver ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `mail_items` WHERE (mail_id ) NOT IN ( SELECT id FROM `mail` );
DELETE FROM `petition` WHERE (ownerguid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `petition` WHERE (petitionguid ) NOT IN ( SELECT guid FROM `item_instance` );
DELETE FROM `petition_sign` WHERE (ownerguid ) NOT IN ( SELECT guid FROM @CHARACTERS );
DELETE FROM `petition_sign` WHERE playerguid NOT IN (SELECT guid FROM @CHARACTERS );
DELETE FROM `petition_sign` WHERE petitionguid NOT IN (SELECT petitionguid FROM `petition` );
TRUNCATE TABLE `pet_aura`;
DELETE FROM `pet_spell` WHERE guid NOT IN (SELECT id FROM `character_pet` );
TRUNCATE TABLE `pet_spell_cooldown`;
DELETE FROM `item_instance` WHERE `guid` NOT IN (SELECT `item` FROM `character_inventory`) AND `guid` NOT IN (SELECT `itemguid` FROM `auctionhouse`) AND `guid` NOT IN (SELECT `item_guid` FROM `guild_bank_item`) AND `guid` NOT IN (SELECT `item_guid` FROM `mail_items`) AND `guid` NOT IN (SELECT `item_guid` FROM `character_gifts`);
DELETE FROM `item_instance` WHERE `owner_guid` NOT IN (SELECT `guid` FROM `character_inventory`) AND `owner_guid`<>'0';
DELETE FROM `character_inventory` WHERE `item` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `auctionhouse` WHERE `itemguid` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `guild_bank_item` WHERE `item_guid` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `mail_items` WHERE `item_guid` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `character_gifts` WHERE `item_guid` NOT IN (SELECT `guid` FROM `item_instance`);
now after reading through it this should accomplish exactly what i want. so i run it.
Problem:
Code:
Query:
TRUNCATE TABLE `pet_aura`;
DELETE FROM `pet_spell` WHERE guid NOT IN (SELECT id FROM `character_pet` );
TRUNCATE TABLE `pet_spell_cooldown`;
DELETE FROM `item_instance` WHERE `guid` NOT IN (SELECT `item` FROM `character_inventory`) AND `guid` NOT IN (SELECT `itemguid` FROM `auctionhouse`) AND `guid` NOT IN (SELECT `item_guid` FROM `guild_bank_item`) AND `guid` NOT IN (SELECT `item_guid` FROM `mail_items`) AND `guid` NOT IN (SELECT `item_guid` FROM `character_gifts`);
DELETE FROM `item_instance` WHERE `owner_guid` NOT IN (SELECT `guid` FROM `character_inventory`) AND `owner_guid`<>'0';
DELETE FROM `character_inventory` WHERE `item` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `auctionhouse` WHERE `itemguid` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `guild_bank_item` WHERE `item_guid` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `mail_items` WHERE `item_guid` NOT IN (SELECT `guid` FROM `item_instance`);
DELETE FROM `character_gifts` WHERE `item_guid` NOT IN (SELECT `guid` FROM `item_instance`);
Error occured at:2013-10-19 12:47:40
Line no.:77
Error Code: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0';
DELETE FROM `character_inventory` WHERE `item` NOT IN (SELECT `guid` FROM `i' at line 1
that is the error i get (first half of error log deleted to save space) any ideas?