2017-02-17 241 views
1

我在我的SQL腳本中使用了levenshtein()函數。我正在使用Postgresql數據庫和客戶端來執行腳本。它拋出一個錯誤:錯誤:函數levenshtein()不存在

function levenshtein(character varying, character varying) does not exist. HINT : No function matches the given name and argument types. You might need to add explicit type casts.

我知道它的常見的解決方案,即創造一個像我已經做了並且奇怪的是,當我在創建fuzzystrmatch擴展同一個腳本運行平穩6天前「fuzzystrmatch」擴展第一名!

下面是我使用levenshtein()的代碼行。

as $$select (1.0 - levenshtein($1, $2)::real/greatest(length($1), length($2)))::real;$$; 

回答

2

這個SQL命令將告訴您目前安裝的擴展:

SELECT n.nspname 
FROM pg_extension e 
    JOIN pg_namespace n 
     ON e.extnamespace = n.oid 
WHERE e.extname = 'fuzzystrmatch'; 

如果不是你的search_path,您的查詢將無法找到該功能。

要在不同的架構擴展,在下面的例子中public,刪除並重新創建它:

DROP EXTENSION fuzzystrmatch; 
CREATE EXTENSION fuzzystrmatch SCHEMA public; 
+0

它與超級用戶完成。當我創建擴展,它會拋出錯誤說'擴展fuzzystrmatch已經存在' –

+0

你可以顯示上述查詢確切的錯誤消息?另外,哪些數據類型是$ 1和$ 2? –

+0

錯誤:函數levenshtein(charcater變化,字符變化)不存在(指向我在我的問題中提供的代碼行) 提示:沒有函數與給定的名稱和參數類型匹配。您可能需要添加顯式類型轉換。 $ 1和$ 2屬於varchar類型 –