无法在 RDS 上的 PosrgreSQL 9.3 上运行digest()

Ada*_*tan 5 postgresql-9.3 hashing

按照另一个答案给出的建议,我尝试digest()在 AWS RDS 上的 PostgreSQL 9.3 上使用该函数:

devdb=> SELECT digest('blah', 'sha1');
ERROR:  function digest(unknown, unknown) does not exist
LINE 1: SELECT digest('blah', 'sha1');
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

即使存在 pgcrypto:

devdb=> SHOW rds.extensions;
Run Code Online (Sandbox Code Playgroud)

btree_gin,btree_gist,chkpass,citext,cube,dblink,dict_int,dict_xsyn,earthdistance,fuzzystrmatch,hstore,intagg,intarray,isn,ltree,pgcrypto,pgrowlocks,pg_trgm,plperl,plpgsql,pltcl,posttiger,postggis_ tablefunc,tsearch2,unaccent,uuid-ossp

如何启用该digest()功能?

更新

在AWS RDS论坛上共同提问,会发帖互相更新。

digest() 数据库上似乎不存在:

devdb=> \df digest
                       List of functions
 Schema | Name | Result data type | Argument data types | Type
--------+------+------------------+---------------------+------
(0 rows)
Run Code Online (Sandbox Code Playgroud)

Ada*_*tan 12

Shawn@AWS在 AWS 论坛上回答了这个问题-rds.extension列表显示了可用的模块,而不是已安装的模块。

感谢您使用 RDS Postgres。“rds.extension”参数显示了 RDS Postgres 中可用的扩展。您仍然需要执行“创建扩展”命令。

使用您的测试用例:

postgres=> show rds.extensions;
... ,pgcrypto, ...
postgres=> create extension pgcrypto;
CREATE EXTENSION

postgres=> SELECT digest('blah', 'sha1');
digest
\x5bf1fd927dfb8679496a2e6cf00cbe50c1c87145
(1 row)
Run Code Online (Sandbox Code Playgroud)

附录

pg_available_extensions 显示哪些扩展可用,哪些已经安装:

postgres=> SELECT * FROM pg_available_extensions;

          name          | default_version | installed_version |                               comment
------------------------+-----------------+-------------------+---------------------------------------------------------------------
 chkpass                | 1.0             |                   | data type for auto-encrypted passwords
 xml2                   | 1.0             |                   | XPath querying and XSLT
 plpgsql                | 1.0             | 1.0               | PL/pgSQL procedural language
 pgcrypto               | 1.0             |                   | cryptographic functions
 postgres_fdw           | 1.0             |                   | foreign-data wrapper for remote PostgreSQL servers
...
Run Code Online (Sandbox Code Playgroud)