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

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号