1

我在使用从另一个数据库中提取的 MySQL 函数时遇到问题。我做了和导入数据和函数和程序分开。

我现在有makehash一个调用preg_replace. 我在任何地方都看不到这个函数或过程。

如果我运行show function statusshow 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

您从中复制该函数的数据库很可能正在使用lib_mysqludf_preg库,该库除其他外还preg_replace()为 MySQL 提供了一个函数。要使用它,您需要下载、编译(除非使用预构建的二进制包)并安装该库;有关详细信息,请参阅上面的链接。

于 2013-01-08T00:18:40.527 回答