Big Trouble in Little Database (Size)

I ran into this problem a day ago; all users on a WordPress blog couldn’t login. They wouldn’t receive an error when entering the correct password, but they also wouldn’t login. Attempts to reset passwords also failed, even using the trick to reset the admin password via theme.php.

Eventually I found that the database was full. The client, on Network Solutions, was allotted 300mb and they were at 301. Not to fear! I found that running the following SQL commands directly in the database manager would do the job:

DELETE FROM wp_posts WHERE post_type = “revision”;
OPTIMIZE TABLE wp_posts;
DELETE FROM wp_comments WHERE comment_approved = “spam”;

DELETE FROM wp_commentmeta WHERE meta_key
LIKE “%akismet%”

DELETE FROM wp_commentmeta WHERE comment_id
NOT IN (
SELECT comment_id
FROM wp_comments
)

But alas, I found myself in a Catch-22. To remove the data deleted above, you have to optimize each table. But to optimize each table, there had to be more free space in the database! Some users have had luck calling their web host, and having them somehow clear out the old entries. This client in particular ended up buying for $4 per month an extra 700mb in database space.

Post title inspiration goes to the graphic novel and cult classic: