psql 9.5: gen_random_uuid () không hoạt động


15

SELECT gen_random_uuid()

sản xuất đầu ra

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.

Tôi đã chạy CREATE EXTENSION pgcrypto;trên cơ sở dữ liệu được chọn và SELECT gen_random_bytes(1)hoạt động hoàn hảo ( gen_random_byteskhông hoạt động trên các cơ sở dữ liệu khác nơi pgcryptotiện ích mở rộng không được tạo thủ công).

% psql --version
psql (PostgreSQL) 9.5.3

Phiên bản Ubuntu là 16.04.

Câu trả lời:


26

bạn có thể kiểm tra nếu các chức năng được xác định bằng cách sử dụng

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

hoặc là:

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

nếu cả hai chức năng không được xác định thì có thể bạn đã gặp lỗi với việc tạo tiện ích mở rộng - chỉ cần thả nó và tạo lại:

drop extension pgcrypto;
CREATE EXTENSION pgcrypto;

Hàm to_regprockhông tồn tại cả : ERROR: function to_regproc(unknown) does not exist.
d9k

Phiên bản nào bạn đang sử dụng? Điều này chỉ mới được thêm gần đây ... Hãy thử truy vấn pg_proc.
cohenjo

cohenjo, ok, tôi hiểu rồi select version()đã cho tôi PostgreSQL 9.3.12 on x86_64-unknown-linux-gnu...tôi nâng cấp Ubuntu 14,04-16,04 nhưng máy chủ psql đã không được nâng cấp đúng cách, tôi nghĩ vậy. psql --versionthực sự cho tôi thấy 9.5.3, điều đó làm tôi bối rối rất nhiều.
d9k

1
Tôi đã cài đặt phiên bản 9,5 postgresql nhưng nó không thay thế phiên bản 9.3 hiện có, nó chỉ bắt đầu cùng với nhưng trên cổng khác! Vì vậy, có hai phiên bản được cài đặt và tôi phải di chuyển và nâng cấp cơ sở dữ liệu hiện có từ 9.3 lên 9.5 với hướng dẫn này wiki.postgresql.org/wiki/Using_pg_upTHER_on_Ub Ubuntu / Debian Nhưng ngay cả sau khi nâng cấp này, gen_random_uuid()tôi phải tự tạo lại tiện ích mở rộng ( drop extension pgcrypto; CREATE EXTENSION pgcrypto;) bạn giả định. Cảm ơn, @cohenjo!
d9k

1
Tôi đã sử dụng CREATE IF NOT EXISTSvà có lỗi này. Hậu quả DROP EXTENSION pgcryptoCREATE EXTENSION pgcryptogiúp đỡ. Cảm ơn bạn.
Zon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.