2011-11-03 14 views
10

La pagina Web di Postgresql indica che pgcrypto è incluso nel download per Postgresql 9.1. Non esiste un file pgcrypto.sql, tuttavia. Se guardo nella directory share \ estensione ci sono 3 file:Come installo pgcrypto in postgresql 9.1 su Windows?

pgcrypto - 1.0.sql pgcrypto - non imballati - 1.0.sql pgcrypto.control

Se provo ad installare con

\ i pgcrypto - 1.0.sql

ottengo un po 'di errori come questo:

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

Forse i file nella condivisione \ ext l'intenzione era di essere chiamata dal file share \ contrib \ pgcrypto.sql (che non esiste).

Su linux su Postgresql 8.4 Devo installare il pacchetto contrib per ottenere pgcrypto.sql. C'è un altro pacchetto che devo installare su Windows per Postgresql 9.1?

Grazie.

risposta

14

Nella v9.1 è stato modificato il modo di installare moduli aggiuntivi, che ora sono chiamati EXTENSIONS e sono installati con una speciale istruzione SQL CREATE EXTENSION.

+0

sono entrato "CREATE estensione", "CREATE ESTENSIONE pgcrypto", "CREATE ESTENSIONE pgcrypto - 1.0" e "Creazione interni pgcrypto - 1.0.sql" e non è successo niente. Niente di nuovo appare nelle estensioni in pgAdmin. Cos'altro devo fare? –

+7

'create extension pgcrypto' funziona per me. Hai commesso la tua dichiarazione? Cosa mostra 'select * da pg_available_extensions' ti mostra subito dopo aver lanciato 'CREATE EXTENSION'? –

+0

In esecuzione "crea estensione pgcrypto" dallo strumento Query in pgadmin funzionato. psql ha alcuni problemi in esecuzione in cygwin. Devo aver avuto un problema con la sessione di psql in cygwin. –

0

Stavo cercando di convertire uno script MySQL che contenesse la loro funzione SHA1. Dopo aver finalmente eseguito il comando "create extension pgcrypto", l'esempio nella documentazione di PostgreSQL ha funzionato perfettamente (almeno tutti i valori che ho provato fino ad ora).

Ecco la funzione SHA1:

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

Va notato che ho fatto tutto questo su PostgreSQL 9.1 con lo strumento pgAdminIII e 64-bit di Windows 7.

0

Se è necessario l'uso alcune estensioni, ad esempio per pgcrypto: "CREATE EXTENSION pgcrypto" da una query di finestra, ma è molto importante dire che questo script deve essere eseguito nel DB che è necessario utilizzare questa estensione, dopo aver terminato lo script per verificate che sia installato, controllate in pgAdmin sul vostro DB le estensioni seccion.

Spero che questo aiuto.

1

1.Add le estensioni: creare un'estensione pgcrypto

2.check le estensioni: select * from pg_available_extensions enter image description here

3.use le estensioni: selezionare '{} SHA' || encode (digest ('test', 'sha1'), 'base64');

enter image description here

Problemi correlati