1

別のデータベースから取得したMySQL関数に問題があります。データと機能および手順を別々にインポートしました。

これmakehashで、を呼び出す関数ができましたpreg_replace。しかし、この関数や手順はどこにも見当たりません。

実行するshow function statusか、show procedure status何の関係もない場合preg_replaceは、以前にあったカスタムプロシージャと関数のみが表示されます。

コピー元のデータベースにインストールされていて、新しいデータベースにコピーするのを怠ったものがありますか?

makehash関数は次のとおりです。

CREATE DEFINER=`root`@`localhost` FUNCTION `makehash`(description text, raw_location text, title text) RETURNS varchar(32) CHARSET utf8
NO SQL
DETERMINISTIC
begin
    declare data longtext;
    declare hash varchar(32);
    set data = ifnull(description, '');
    set hash = null;
    if length(data) > 64 then
        set data = lower(concat(data, ifnull(raw_location, ''), ifnull(title, '')));
        set hash = md5(preg_replace('/[^a-z]/', '', data));
    end if;
return hash;
4

1 に答える 1

2

その関数をコピーしたデータベースは、特にMySQL用の関数を提供するlib_mysqludf_pregライブラリを使用している可能性があります。preg_replace()これを利用するには、そのライブラリをダウンロードしてコンパイルし(ビルド済みのバイナリパッケージを使用している場合を除く)、インストールする必要があります。詳細については、上記のリンクを参照してください。

于 2013-01-08T00:18:40.527 に答える