Tras realizar una actualización del servidor MySQL a su última versión, al importar nuevos procedimientos al motor de base de datos, éste proceso falla y parece ser problema de que una tabla está corrupta.
mysql> source /home/javier/procedures.sql ERROR 1548 (HY000): Cannot load from mysql.proc. The table is probably corrupted
La forma de solucionarlo debería de ser simple. Si la tabla está corrupta, la reparamos con el comando repair de mysql y debería de desaparecer el problema.
mysql> repair table mysql.proc; +------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +------------+--------+----------+----------+ | mysql.proc | repair | status | OK | +------------+--------+----------+----------+ 1 row in set (0.00 sec)
Tras realizar esto, el problema persiste y no es por que la tabla esté corrupta. Como se observa en la salida del comando anterior, el estado de la tabla es correcto (OK). Por lo tanto, el problema no está en una tabla corrupta.
Investigando algo más, observé que el problema está en que tras la actualización no se hizo un upgrade de las tablas (mysql_upgrade), que no es necesario para el correcto funcionamiento de mysql, pero sí para, por ejemplo, crear nuevos procedimientos.
shell> mysql_upgrade -u root -p Enter passwd: Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments mysql.host OK mysql.ndb_binlog_index OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.proxies_priv OK ...Si ahora intentamos crear los procedimientos, ya es posible.
mysql> source /home/javier/procedures.sql Query OK, 0 rows affected (0.00 sec)