MySQL のテーブルが壊れている、という意味の、初めて見るエラーメッセージに遭遇しました。 #1548 - Cannot load from mysql.proc. The table is probably corrupted

でも、check table しても問題はなし。 mysql> check table mysql.proc extended; +------------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +------------+-------+----------+----------+ | mysql.proc | check | status | OK | +------------+-------+----------+----------+ 1 row in set (0.00 sec)

念のためDBをダンプして、drop & create しても変化なし。こんなときは mysql_upgrade すればいいらしい。テーブルの構造や存在などの整合性を正してくれるとのこと。

正確には、このコマンドは「examines all tables in all databases for incompatibilities with the current version of MySQL Server」、つまり、MySQLサーバーのバージョンとデータとの不整合を正してくれる。「should be executed each time you upgrade MySQL」なので、本当は yum update で MySQl がバージョンアップされたときにやっておくべきなのでしょう(え、自動でやってくれないの?)。

mysql_upgrade

Looking for ‘mysql’ as: mysql Looking for ‘mysqlcheck’ as: mysqlcheck FATAL ERROR: Upgrade failed </code>

あ、失敗した。ユーザー名とパスワードが必要らしい。

mysql_upgrade -u root -p

Enter password: Looking for ‘mysql’ as: mysql Looking for ‘mysqlcheck’ as: mysqlcheck Running ‘mysqlcheck with default connection arguments Running ‘mysqlcheck with default connection arguments 〜 テーブル名がずらずら 〜 </code>