psql 9.5: gen_random_uuid () non funzionante


16

SELECT gen_random_uuid()

produce output

ERROR:  function gen_random_uuid() does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.

Ho eseguito CREATE EXTENSION pgcrypto;il database selezionato e SELECT gen_random_bytes(1)funziona perfettamente ( gen_random_bytesnon funziona su altri database in cui l' pgcryptoestensione non è stata creata manualmente).

% psql --version
psql (PostgreSQL) 9.5.3

La versione di Ubuntu è 16.04.

Risposte:


27

puoi verificare se le funzioni sono definite usando

select pg_get_functiondef(to_regproc('gen_random_bytes'));
select pg_get_functiondef(to_regproc('gen_random_uuid'));

o:

select * from pg_proc where proname like 'gen_random_%';

se entrambe le funzioni non sono definite, probabilmente si è verificato un errore con la creazione dell'estensione: rilasciarlo e ricreare:

drop extension pgcrypto;
CREATE EXTENSION pgcrypto;

Funzione to_regprocnon esiste né: ERROR: function to_regproc(unknown) does not exist.
d9k,

Quale versione stai usando? Questo è stato aggiunto solo di recente ... Prova la query pg_proc.
cohenjo,

cohenjo, ok ho capito. select version()mi ha dato l' PostgreSQL 9.3.12 on x86_64-unknown-linux-gnu...upgrade di Ubuntu dal 14.04 al 16.04, ma credo che il server psql non sia stato aggiornato correttamente. psql --versionmi mostra davvero 9.5.3, questo mi ha confuso molto.
d9k,

1
Ho installato la versione 9.5 postgresql ma non ha sostituito la versione 9.3 esistente, è appena iniziata a fianco ma sull'altra porta! Quindi c'erano due versioni installate e ho dovuto spostare e aggiornare i database esistenti dalla 9.3 alla 9.5 con questo tutorial wiki.postgresql.org/wiki/Using_pg_upgrade_on_Ubuntu/Debian Ma anche dopo questo aggiornamento per rendere il gen_random_uuid()lavoro ho dovuto ricreare manualmente extension ( drop extension pgcrypto; CREATE EXTENSION pgcrypto;) come hai assunto. Grazie, @cohenjo!
d9k,

1
Ho usato CREATE IF NOT EXISTSe ho avuto questo errore. Conseguente DROP EXTENSION pgcryptoe CREATE EXTENSION pgcryptoaiutato. Grazie.
Zon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.