When I tried to delete a vocabulary, Drupal timed out and I don't think any or all of the terms in the vocabulary were deleted. How can I delete them manually in the database?
Can you run sql queries directly against the database? What makes you think the terms are still there? The vocabulary table contains data about the vocabulary, and you could do a left outer join with term_data to see if there are any "orpaned" terms. So something like (assuming you haven't used a prefix on your drupal database):
SELECT * FROM term_data t LEFT OUTER JOIN vocabulary v ON t.vid = v.vid WHERE v.vid IS NULL;
You can do a delete on a join if you need to but I suspect you won't find any orphans.
You should also probably check term_node as well that links terms to nodes. If you're going to run these deletes please back up your database first! Also as these queries are written, the term_node needs to run first.
-- Run this first DELETE n FROM term_node n JOIN term_data t ON n.tid = t.tid LEFT OUTER JOIN vocabulary v ON t.vid = v.vid WHERE v.vid IS NULL; -- Then run this query DELETE t FROM term_data t LEFT OUTER JOIN vocabulary v ON t.vid = v.vid WHERE v.vid IS NULL;
Remember to back up your database first!