web-dev-qa-db-ja.com

Windowsのpostgresql9.1にpgcryptoをインストールするにはどうすればよいですか?

PostgresqlのWebページには、pgcryptoがPostgresql9.1のダウンロードに含まれていると書かれています。ただし、pgcrypto.sqlファイルはありません。 share\extensionディレクトリを見ると、次の3つのファイルがあります。

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

でインストールしようとすると

\ ipgcrypto--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では、pgcrypto.sqlを取得するためにcontribパッケージをインストールする必要があります。 Postgresql 9.1用にWindowsにインストールする必要のある別のパッケージはありますか?

ありがとう。

13
Dean Schulze

V9.1では、追加のモジュールをインストールする方法が変更され、それらはEXTENSIONSと呼ばれるようになり、特別なSQLステートメント CREATE EXTENSION でインストールされます。

19
Milen A. Radev

1.拡張機能を追加します:拡張機能pgcryptoを作成します

2.拡張子を確認します:select * from pg_available_extensionsenter image description here

3.拡張機能を使用します:select '{SHA}' || encode(digest( 'test'、 'sha1')、 'base64');

enter image description here

7
liyuhui

SHA1関数を含むMySQLスクリプトを変換しようとしていました。最後に「createextensionpgcrypto」コマンドを実行した後、PostgreSQLドキュメントの例は完全に機能しました(少なくともこれまでに試したすべての値)。

SHA1関数は次のとおりです。

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

PostgreSQL9.1でPgAdminIIIツールを使用してこれらすべてを実行したことと64ビットのWindows7で実行したことに注意してください。

0
David S

何らかの拡張機能を使用する必要がある場合、その方法は、たとえばpgcryptoの場合です。ウィンドウクエリからの「CREATEEXTENSION pgcrypto」ですが、このスクリプトは、この拡張機能を使用する必要があるDBで実行する必要があることを伝えることが非常に重要です。スクリプトがインストールされていることを確認するためにスクリプトを終了し、DBの拡張機能セクションでpgAdminをチェックインします。

これがお役に立てば幸いです。

0
hermeslm