পিএসএইচএল 9.5: জেন_রেন্ডম_উইয়েড () কাজ করছে না


16

SELECT gen_random_uuid()

আউটপুট উত্পাদন করে

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;নির্বাচিত ডাটাবেসের উপর দৌড়ে এসেছি এবং SELECT gen_random_bytes(1)পুরোপুরি কাজ করি ( gen_random_bytesঅন্যান্য ডাটাবেসে যেখানে কাজ করে pgcryptoম্যানুয়ালি ম্যানুয়ালি তৈরি করা হয়নি) কাজ করে না ।

% psql --version
psql (PostgreSQL) 9.5.3

উবুন্টু সংস্করণটি 16.04।

উত্তর:


27

ফাংশনগুলি ব্যবহার করে সংজ্ঞায়িত করা হয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন

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

বা:

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

যদি উভয় ফাংশন সংজ্ঞায়িত না হয় তবে এক্সটেনশন তৈরিতে আপনার সম্ভবত একটি ত্রুটি ছিল - কেবল এটি ফেলে দিন এবং পুনরায় তৈরি করুন:

drop extension pgcrypto;
CREATE EXTENSION pgcrypto;

ফাংশন to_regprocপারেন বিদ্যমান নয়: ERROR: function to_regproc(unknown) does not exist
d9k

আপনি কি সংস্করণ ব্যবহার করছেন? এটি সম্প্রতি যুক্ত করা হয়েছিল ... pg_proc ক্যোয়ারী চেষ্টা করুন।
কোহেনজো

cohenjo, ঠিক আছে, আমি বুঝতে পেরেছি. select version()আমাকে PostgreSQL 9.3.12 on x86_64-unknown-linux-gnu...আমি উবুন্টুকে 14.04 থেকে 16.04 এ আপগ্রেড করেছি তবে পিএসএইচএল সার্ভারটি সঠিকভাবে আপগ্রেড করা হয়নি, আমার ধারণা। psql --versionসত্যিই আমাকে দেখায় 9.5.3, যা আমাকে অনেক গুলিয়ে ফেলেছিল।
d9k

1
আমি 9.5 পোস্টগ্র্যাস্কিল সংস্করণ ইনস্টল করেছি তবে এটি বিদ্যমান 9.3 সংস্করণটি প্রতিস্থাপন করে নি, এটি কেবল পাশাপাশি শুরু হয়েছিল তবে অন্য বন্দরে! সুতরাং দুটি সংস্করণ ইনস্টল করা হয়েছিল এবং আমি এই টিউটোরিয়ালটি দিয়ে 9.3 থেকে 9.5 থেকে বিদ্যমান ডেটাবেসগুলিকে সরিয়ে নিয়ে আপগ্রেড করতে হয়েছিল উইকি.পস্টগ্রেসক্লি.আর.উইকি / ইউসিং_প্রেগডগ্রেড_ন_উবুন্টু / ডেবিয়ান তবে এই আপগ্রেডের পরেও gen_random_uuid()আমাকে নিজে নিজে এক্সটেনশানটি পুনরায় তৈরি করতে হয়েছিল ( drop extension pgcrypto; CREATE EXTENSION pgcrypto;) আপনি ধরে নিয়েছেন ধন্যবাদ, @ কোহেনজো!
d9k

1
আমি CREATE IF NOT EXISTSএই ত্রুটিটি ব্যবহার করেছি এবং করেছি । উপসংহার DROP EXTENSION pgcryptoএবং CREATE EXTENSION pgcryptoসাহায্য। ধন্যবাদ.
জোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.