psql 9.5: gen_random_uuid () funktioniert nicht

15

SELECT gen_random_uuid()

erzeugt eine Ausgabe

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.

Ich habe eine CREATE EXTENSION pgcrypto;ausgewählte Datenbank ausgeführt und SELECT gen_random_bytes(1)arbeite einwandfrei ( gen_random_bytesfunktioniert nicht bei anderen Datenbanken, bei denen die pgcryptoErweiterung nicht manuell erstellt wurde).

% psql --version
psql (PostgreSQL) 9.5.3

Ubuntu-Version ist 16.04.

d9k
quelle

Antworten:

24

Mit können Sie überprüfen, ob die Funktionen definiert sind

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

oder:

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

Wenn beide Funktionen nicht definiert sind, ist wahrscheinlich ein Fehler bei der Erstellung der Erweiterung aufgetreten. Löschen Sie sie einfach und erstellen Sie sie erneut:

drop extension pgcrypto;
CREATE EXTENSION pgcrypto;
cohenjo
quelle
Funktion to_regprocexistiert nicht entweder: ERROR: function to_regproc(unknown) does not exist.
09.08.16
Welche Version benutzt du? Dies wurde erst kürzlich hinzugefügt ... Probieren Sie die Abfrage pg_proc aus.
Cohenjo
cohenjo, OK ich habe es. select version()Ich PostgreSQL 9.3.12 on x86_64-unknown-linux-gnu...habe Ubuntu von 14.04 auf 16.04 aktualisiert, aber der psql-Server wurde meiner Meinung nach nicht richtig aktualisiert. psql --versionzeigt mir wirklich 9.5.3, das hat mich sehr verwirrt.
09.08.16
1
Ich habe die Postgresql-Version 9.5 installiert, aber sie hat die vorhandene Version 9.3 nicht ersetzt. So gab es zwei Versionen installiert und ich musste vorhandene Datenbanken 9,3-9,5 mit diesem Tutorial bewegen und aktualisieren wiki.postgresql.org/wiki/Using_pg_upgrade_on_Ubuntu/Debian Aber auch nach diesem Upgrade zu machen gen_random_uuid()Arbeit , die ich manuell neu erstellen Erweiterung hatte ( drop extension pgcrypto; CREATE EXTENSION pgcrypto;) als du hast angenommen. Danke, @cohenjo!
d9k
1
Ich CREATE IF NOT EXISTShabe diesen Fehler benutzt und hatte ihn. Konsequent DROP EXTENSION pgcryptound CREATE EXTENSION pgcryptogeholfen. Vielen Dank.
Zon