错误:函数pgp_sym_encrypt(bytea,text)不存在

时间:2018-02-27 17:11:32

标签: postgresql

我正在尝试从我的nodejs应用程序运行查询,以将加密数据更新为列。但是我看到下面的错误 -

错误:函数pgp_sym_encrypt(未知,未知)不存在

查询摘要

        client.query('UPDATE application_test set content = pgp_sym_encrypt($2,$3) where application_id = $1', [appId, data, password], function (dbErr: any, result: any) {
            done();

            if (dbErr) {
                reject(dbErr);
            } else {
                resolve();
            }
        }); 

但是当我使用postgresql客户端运行时,下面的sql工作正常:

update application_test set content = pgp_sym_encrypt('{"appId":"122345"}', 'password')
where application_id='122345';

编辑:原来我使用带有dba密码的客户端运行查询。但是从代码中,它是连接到同一数据库的不同用户。如何使用相同的数据库使pgp_sym_encrypt实用程序对其他用户可见?

1 个答案:

答案 0 :(得分:0)

我想您需要像这样显式地键入强制调用

client.query('UPDATE application_test set content = pgp_sym_encrypt($2 ::text,$3 ::text) where application_id = $1', [appId, data, password], function (dbErr: any, result: any) {
   done();
   if (dbErr) {
      reject(dbErr);
   } else {
   resolve();
}
        }); 
  

P.S。 pgp_sym_encryp功能对所有用户可见。