how to repair all tables in all databases on a mysql server


This comes in handy, and I have to google it every time I need it12. So, here's a copy for reference later…

mysqlcheck --repair --use-frm --all-databases

Run it as root, with MySQL running. It'll repair every table in every database. Give it time to chew for awhile. It spews out the status of every table as it works. Here's what it found with my FeverËš database tables (which now work just fine):

dnorman_fever.fever__config
warning  : Number of rows changed from 0 to 1
status   : OK
dnorman_fever.fever_favicons
warning  : Number of rows changed from 0 to 408
status   : OK
dnorman_fever.fever_feeds
warning  : Number of rows changed from 0 to 240
status   : OK
dnorman_fever.fever_feeds_groups
warning  : Number of rows changed from 0 to 305
status   : OK
dnorman_fever.fever_groups
warning  : Number of rows changed from 0 to 17
status   : OK
dnorman_fever.fever_items
warning  : Number of rows changed from 0 to 13660
status   : OK
dnorman_fever.fever_links
warning  : Number of rows changed from 0 to 46208
status   : OK

Better.

Looks like it doesn't like INNODB tables, throwing this:

note     : The storage engine for the table doesn't support repair

So, if you're using MyISAM tables, this should do the trick. Not sure how to fix the INNODB tables, or if they even need fixing…


  1. usually coming up with the top-voted answer for a question posted to stackoverflow.com

  2. actually, I use DuckDuckGo, so I get the tip inline in the search results

See Also