没有函数匹配给定的名称和参数类型 - PGCrypto

时间:2015-12-03 16:54:35

标签: python django postgresql

我正在尝试使用Django Pgcrypto扩展库。

该库似乎安装正常,并在我的网站包中。

但是我尝试运行一个查询我的数据库的命令,并运行PGCrypto decrypt函数,我收到此错误:

function pgp_sym_decrypt(character varying, unknown) does not exist

但是我检查我的Postgresql数据库以查看可用的功能,我看到了:

 nspname |        proname        |      params       
---------+-----------------------+-------------------
 public  | pgp_sym_encrypt       | text, text
 public  | pgp_sym_encrypt_bytea | bytea, text
 public  | pgp_sym_encrypt       | text, text, text
 public  | pgp_sym_encrypt_bytea | bytea, text, text
 public  | pgp_sym_decrypt       | bytea, text
 public  | pgp_sym_decrypt_bytea | bytea, text
 public  | pgp_sym_decrypt       | bytea, text, text
 public  | pgp_sym_decrypt_bytea | bytea, text, text

我在Postgres中创建了扩展(对于数据库,我特意要使用扩展名),等等。

那么会导致此错误的原因是什么?

我是否有一些步骤或配置问题?据我所知,PGCrypto已经安装,函数在数据库中,并且在调用时应该可以工作。

2 个答案:

答案 0 :(得分:0)

您应该将加密的数据存储在bytea列中,而不是text列中。您也许可以将其从文本投射到bytea:

pgp_sym_decrypt(area_code::bytea,'Password')

答案 1 :(得分:0)

只需为您运行模式:

CREATE EXTENSION IF NOT EXISTS pgcrypto;