Как установить pgcrypto в postgresql 9.1 в Windows?

На веб-странице Postgresql говорится, что pgcrypto включен в загрузку Postgresql 9.1. Однако файл pgcrypto.sql отсутствует. Если я смотрю в каталоге share\extension, есть 3 файла:

pgcrypto - 1.0.sql pgcrypto - неупакованный - 1.0.sql pgcrypto.control

Если я попытаюсь установить с помощью

\ я 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(которого не существует).

В linux on Postgresql 8.4 Мне нужно установить пакет contrib для получения pgcrypto.sql. Есть ли еще один пакет, который я должен установить в Windows для Postgresql 9.1?

Спасибо.

Ответ 1

В версии 9.1 был изменен способ установки дополнительных модулей, которые теперь называются EXTENSIONS и установлены со специальным оператором SQL CREATE EXTENSION.

Ответ 2

Я пытался преобразовать MySQL script, в котором содержалась их функция SHA1. После завершения команды "create extension pgcrypto", пример в документации PostgreSQL работал отлично (по крайней мере, все значения, которые я пробовал до сих пор).

Вот функция SHA1:

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

Следует отметить, что я сделал все это на PostgreSQL 9.1 с помощью инструмента PgAdminIII и на 64-разрядной Windows 7.

Ответ 3

Если вам нужно использовать некоторое расширение, способ, например, для pgcrypto: "CREATE EXTENSION pgcrypto" из окна запроса, но очень важно сказать, что этот script должен быть выполнен в БД, который вам нужно использовать это расширение, завершив script, чтобы убедиться, что оно установлено, проверьте в pgAdmin над вашим DB расширение seccion.

Я надеюсь, что эта помощь.

Ответ 4

1.add расширения: создать расширение pgcrypto

2. проверьте расширения: выберите * из pg_available_extensions введите описание изображения здесь

3. использовать расширения: выбрать '{SHA}' || encode (дайджест ('test', 'sha1'), 'base64');

введите описание изображения здесь