Как установить pgcrypto в postgresql 9.1 на Windows?
На веб-странице Postgresql говорится, что pgcrypto включен в загрузку для Postgresql 9.1. Нет никакого pgcrypto.однако файл sql. Если я посмотрю в каталоге shareextension есть 3 файла:
Pgcrypto -- 1.0.язык SQL pgcrypto -- unpackaged--1.0.язык SQL pgcrypto.контроль
Если я попытаюсь установить с помощью
i pgcrypto -- 1.0.sql
Я получаю кучу таких ошибок:
psql:pgcrypto--1.0.sql:194: ERROR: could not access file "MODULE_PATHNAME": No such file or directory
Возможно, файлы в shareextension были предназначены для вызова sharecontribpgcrypto.sql-файл (который не существует).
В linux на Postgresql 8.4 мне нужно установить пакет contrib, чтобы получить pgcrypto.язык SQL. Есть ли еще один пакет, который я должен установить на Windows для Postgresql 9.1?
Спасибо.
4 ответа:
В v9. 1 был изменен способ установки дополнительных модулей, которые теперь называются расширениями и устанавливаются с помощью специального оператора SQL CREATE EXTENSION.
Я пытался преобразовать скрипт MySQL, который содержал их функцию SHA1. После того, как наконец-то выполнили команду "create extension pgcrypto", то пример в документации PostgreSQL работал отлично (по крайней мере, все значения, которые я пробовал до сих пор).
Вот функция SHA1:
Следует отметить, что все это я делал на PostgreSQL 9.1 с помощью инструмента PgAdminIII и на 64-битной Windows 7.CREATE OR REPLACE FUNCTION sha1(bytea) returns text AS $$ SELECT encode(digest($1, 'sha1'), 'hex') $$ LANGUAGE SQL STRICT IMMUTABLE;
Если вам нужно использовать какое-то расширение, то путь есть например для pgcrypto: "CREATE EXTENSION pgcrypto" из окна запроса, но очень важно сказать, что этот скрипт должен быть выполнен в БД, что вам нужно использовать это расширение, после того, как вы закончили скрипт, чтобы убедиться, что он установлен, проверьте в pgAdmin над вашей БД расширения seccion.
Я надеюсь, что это поможет.