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を指定してください。

 

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号