別のデータベースから取得した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;