7 x 24 在线支持!
MySQL创建函数由于Error 1548失败
适用于:
MySQL服务器版本5.5及以上
本文信息适用于所有平台。
症状
尝试从GUI客户端创建函数语法如下:
CREATE FUNCTION `mydb`.`f_seq_gen` (`applicationid` text) RETURNS INT
BEGIN
DECLA RE nextval bigint(20);
select seqno into nextval from mydb.seqgen where application_id =
applicationid;
update mydb.se qgen SET seqno = seqno + 1 where application_id = applicationid;
RETURN nextval;
END
但是失败了:
ERROR 1548 (HY000): Cannot load from mysql.proc. The table is probably
corrupted
原因
表mysql.proc被损坏或表结构不正确。
通常这由于从不同版本的更新或转储/恢复造成。
解决方案
首先的步骤应该是:
CHECK TABLE `mysql`.`proc` EXTENDED;
REPAIR TABLE `mysql`.`proc`;
然后尝试重建储存的函数。
如果失败,很可能是因为表结构不正确。这通常是由于从不同版本的更新或转储/恢复造成的。
直接的解决方案是运行
mysql_upgrade ‐uroot ‐‐force ‐p
使系统表回到正确结构。
如果你不想检查所有的数据表(以免耗时太长),那就指定选项upgradesystemtables。
Keywords
MYSQL; UPGRADE