15

Postgresql の Web ページによると、Postgresql 9.1 のダウンロードには pgcrypto が含まれています。ただし、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 を取得する必要があります。Postgresql 9.1 用に Windows にインストールする必要がある別のパッケージはありますか?

ありがとう。

4

4 に答える 4

20

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

于 2011-11-03T20:19:17.173 に答える
1

いくつかの拡張機能を使用する必要がある場合、その方法は、たとえば pgcrypto の場合です: ウィンドウ クエリから「CREATE EXTENSION pgcrypto」を実行しますが、このスクリプトは、この拡張機能を使用する必要がある DB で実行する必要があると言うことが非常に重要です。スクリプトを終了してインストールされていることを確認し、DB の拡張セクションで 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;

これはすべて、PostgreSQL 9.1 で PgAdminIII ツールを使用し、64 ビットの Windows 7 で行ったことに注意してください。

于 2011-11-14T16:26:59.797 に答える