15

Postgresql 的网页说 pgcrypto 包含在 Postgresql 9.1 的下载中。但是,没有 pgcrypto.sql 文件。如果我查看 share\extension 目录,则有 3 个文件:

pgcrypto--1.0.sql pgcrypto--unpackaged--1.0.sql pgcrypto.control

如果我尝试安装

\i pgcrypto--1.0.sql

我收到一堆这样的错误:

psql:pgcrypto--1.0.sql:194: ERROR:  could not access file "MODULE_PATHNAME": No such file or directory

也许 share\extension 中的文件应该由 share\contrib\pgcrypto.sql 文件(不存在)调用。

在 Postgresql 8.4 上的 linux 上,我必须安装 contrib 包才能获得 pgcrypto.sql。我必须在 Windows 上为 Postgresql 9.1 安装另一个软件包吗?

谢谢。

4

4 回答 4

20

在 v9.1 中,安装额外模块的方式发生了变化,现在称为 EXTENSIONS 并使用特殊的 SQL 语句CREATE EXTENSION进行安装。

于 2011-11-03T20:19:17.173 回答
8

1.添加扩展:创建扩展pgcrypto

2.检查扩展:select * from pg_available_extensions 在此处输入图像描述

3.使用扩展:select '{SHA}'||encode(digest('test', 'sha1'), 'base64');

在此处输入图像描述

于 2017-09-05T02:54:59.370 回答
1

如果您需要使用一些扩展,例如pgcrypto:来自窗口查询的“CREATE EXTENSION pgcrypto”,但非常重要的是说这个脚本必须在您需要使用此扩展的数据库中执行,之后完成脚本以验证它是否已安装,通过您的数据库检查 pgAdmin 的扩展部分。

我希望这会有所帮助。

于 2014-12-05T17:25:14.423 回答
0

我试图转换一个包含他们的 SHA1 函数的 MySQL 脚本。最后执行“create extension pgcrypto”命令后,PostgreSQL 文档中的示例运行良好(至少到目前为止我尝试过的所有值)。

这是SHA1函数:

CREATE OR REPLACE FUNCTION sha1(bytea) returns text AS $$
  SELECT encode(digest($1, 'sha1'), 'hex')
$$ LANGUAGE SQL STRICT IMMUTABLE;

应该注意的是,我使用 PgAdminIII 工具在 PostgreSQL 9.1 和 64 位 Windows 7 上完成了所有这些工作。

于 2011-11-14T16:26:59.797 回答