psql 9.5: gen_random_uuid () çalışmıyor


16

SELECT gen_random_uuid()

çıktı üretir

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.

CREATE EXTENSION pgcrypto;Seçili veritabanında koştum ve SELECT gen_random_bytes(1)mükemmel çalışıyor ( uzantının manuel olarak oluşturulmadığı gen_random_bytesdiğer veritabanlarında çalışmaz pgcrypto).

% psql --version
psql (PostgreSQL) 9.5.3

Ubuntu sürümü 16.04'tür.

Yanıtlar:


27

ile fonksiyonların tanımlanıp tanımlanmadığını kontrol edebilirsiniz

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

veya:

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

eğer her iki işlev de tanımlanmamışsa, muhtemelen uzantı oluşturma ile ilgili bir hatayla karşılaşırsınız - sadece bırakın ve yeniden oluşturun:

drop extension pgcrypto;
CREATE EXTENSION pgcrypto;

İşlev to_regprocya yok: ERROR: function to_regproc(unknown) does not exist.
d9k

Hangi sürümü kullanıyorsunuz? Bu yalnızca son zamanlarda eklendi ... pg_proc sorgusunu deneyin.
cohenjo

cohenjo, tamam anladım. select version()Bana PostgreSQL 9.3.12 on x86_64-unknown-linux-gnu...Ubuntu'yu 14.04'ten 16.04'e yükselttim ama psql sunucusu düzgün bir şekilde yükseltilmedi diye düşünüyorum. psql --versiongerçekten bana gösteriyor 9.5.3, bu beni çok karıştırdı.
d9k

1
9.5 postgresql sürümünü yükledim ama mevcut 9.3 sürümünün yerini almadı, sadece yanında başladı ama diğer bağlantı noktasında! Yani iki sürümü yüklü idi ve ben bu öğretici ile 9.5 taşınıp 9.3 olan mevcut veritabanlarını yükseltmek zorunda wiki.postgresql.org/wiki/Using_pg_upgrade_on_Ubuntu/Debian yapmak bile bu yükseltmeden sonra Ama gen_random_uuid()ben elle Tekrar Oluştur uzatma zorunda işi ( drop extension pgcrypto; CREATE EXTENSION pgcrypto;) olarak varsaydın. Teşekkürler @cohenjo!
d9k

1
CREATE IF NOT EXISTSBu hatayı kullandım ve yaşadım . Sonuç olarak DROP EXTENSION pgcryptove CREATE EXTENSION pgcryptoyardımcı oldu. Teşekkür ederim.
Zon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.