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.

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;

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.