I’ve just upgraded a WordPress blog to the latest version 2.3.2 and when I went to write a new post I realised all my categories had disappeared. They were still in the database but the list to the right of where you type your posts was empty. As well as this, I noticed that adding new comments was giving a 404 error in the middle of the page. This second issue was reminiscent of another one I had (and solved) upgrading to 2.2 – the errors were actually 403 errors, but redirecting to 404 error pages because there was no 403 error page defined (i.e. the 404 was happening when the server looked for the 403 page).
I noticed a file called error_log (no extension) in the wp-admin directory and had a look. Apparently some database tables (‘wp_term_taxonomy’ and ‘.wp_terms’) were missing. After reading this support thread I investigated the possibility that my database was out of date. I followed MichaelH’s suggestion of navigating to /wp-admin/upgrade.php, which informed me that my database was up to date. I didn’t believe this to be true though; certainly not after learning that tables were missing. At a hunch, I guessed that when I’d been upgrading through Fantastico, I must have run out of space (a semi-regular occurrence) so the database upgrade was probably left half finished. Assuming that WordPress would determine whether or not I needed to upgrade based on a single configuration or database field I soon found the wp_option.db_version field, which was set 6124.
The Solution
As I suspected, 6124 is the db_version value for WordPress 2.3. I changed this field’s value back from 6124 to 5183 (the db_version value in WordPress 2.2) and hit the upgrade.php page again. This time it told me to upgrade, I did, and the categories are back. Adding new categories still caused 403 and 404 errors, but that was because I’d deleted the .htaccess file created previously when trying to fix the first problem! Recreate that and we’re cooking with gas again.