Email: service@parnassusdata.com 7 x 24 online support!

MySQL创建函数由于Error 1548失败

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