【问题标题】:Mysql call to non existent functionMysql调用不存在的函数
【发布时间】:2012-12-21 17:58:43
【问题描述】:

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

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

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

【问题讨论】:

  • preg_replace 是一个 php 函数 - 不是 mysql。另见:stackoverflow.com/questions/1815865/…
  • @ethrbunny 我知道,但我想知道我是否在另一个数据库中看不到任何东西。理想情况下,我只想从那里复制它。此功能适用于另一个数据库,所以我认为它必须在某个地方。除了函数和过程之外,mysql db 中是否还存储了其他东西?

标签: mysql function preg-replace procedure


【解决方案1】:

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

【讨论】:

  • 就是这样,谢谢。我不认为它会像我想的那样当我列出函数时它们会出现。
猜你喜欢
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2017-04-23
  • 2019-02-04
  • 1970-01-01
  • 2012-12-30
  • 2020-05-10
  • 2014-10-09
相关资源
最近更新 更多