適用範囲:
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を指定してください。
Leave a Reply