2013-01-07 41 views
1

我遇到了一個MySQL函數的問題,我從另一個數據庫中提取。我做了並分別導入了數據和功能和程序。Mysql調用不存在的函數

我現在有一個makehash函數,可以調用preg_replace。儘管如此,我無法看到這個功能或程序。

如果我運行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; 
+1

preg_replace是一個php函數 - 不是mysql。另見:http://stackoverflow.com/questions/1815865/is-there-a-mysql-equivalent-of-phps-preg-replace – ethrbunny

+0

@ethrbunny我知道,但我想知道如果我沒有看到其他的東西D b。理想情況下,我只是想從那裏複製它。這個函數適用於其他分貝,所以我認爲它必須在某處。除了函數和過程還有其他東西存儲在MySQL數據庫? –

回答

2

這可能是因爲該數據庫從您使用lib_mysqludf_preg庫,它提供,除其他事項外,一個preg_replace()功能爲MySQL複製的功能。要使用它,你需要下載,編譯(除非使用預編譯的二進制包)並安裝該庫;詳細信息請參見上面的鏈接。

+0

就是這樣,謝謝。我不認爲這是因爲我想,當我列出這些功能時他們可能會出現。 –