MySQL: SHOW FUNCTION STATUS WHERE Db = ‘name’: Cannot load from mysql.proc. The table is probably corrupted

Oh Dear! monitors your entire site, not just the homepage. We crawl and search for broken pages and mixed content, send alerts when your site is down and notify you on expiring SSL certificates.

Start your free 10 day trial! »

Image of Mattias Geniar

Mattias Geniar, June 25, 2012

Follow me on Twitter as @mattiasgeniar

If you recently upgraded from a MySQL 5.0 or 5.1 to the latest MySQL 5.5, you can run into the following error in logs/back-up scripts.

mysqldump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db ='something'': Cannot load from mysql.proc. The table is probably corrupted (1548)
mysqldump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db = 'somethingelse'': Cannot load from mysql.proc. The table is probably corrupted (1548)
...

The reason why is because MySQL 5.5 provided an update to the schemas, which are not automatically applied to already existing databases. To provide that schema update, it’s important to run the MySQL upgrade command, as it also helps with missing tables or prefixed tables.

The command is run as follows.

$ mysql_upgrade

If you’re getting an access denied error, pass along the username + password.

$ mysql_upgrade
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
FATAL ERROR: Upgrade failed
$ mysql_upgrade -u root -p

That should solve your problem. If it does not, have a look at your MySQL logfiles for more indications.

Will you help me share this post?

It would mean a lot to me if you could help share this post on social media. 🤗