मैंने कमांड के साथ पोस्टग्रेज डेटाबेस के लिए एक स्वच्छ, कोई मालिक बैकअप नहीं लिया है
pg_dump sample_database -O -c -U
बाद में, जब मैं डेटाबेस को पुनर्स्थापित करता हूं
psql -d sample_database -U app_name
हालाँकि, मुझे कई त्रुटियों का सामना करना पड़ा जो मुझे डेटा को पुनर्स्थापित करने से रोकता है:
ERROR: must be owner of extension plpgsql
ERROR: must be owner of schema public
ERROR: schema "public" already exists
ERROR: must be owner of schema public
CREATE EXTENSION
ERROR: must be owner of extension plpgsql
मैंने प्लेन-टेक्स्ट एसक्यूएल जेनेरेट में खुदाई की pg_dump
और मैंने पाया कि इसमें एसक्यूएल है
CREATE SCHEMA public;
COMMENT ON SCHEMA public IS 'standard public schema';
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
मुझे लगता है कि कारण हैं कि उपयोगकर्ता के app_name
पास public
स्कीमा को बदलने के लिए विशेषाधिकार नहीं हैं और plpgsql
।
मैं इस मुद्दे को कैसे हल कर सकता हूं?
plpgsql
, तोDROP EXTENSION plpgsql
आप से पहलेpg_dump
। यह आपके ऐप को एक सुपर उपयोगकर्ता बनाने की तुलना में अधिक सुरक्षित है, और यह त्रुटियों को अनदेखा करने से अधिक सुविधाजनक है (जो आप उपयोग--single-transaction
या करते हैं-v ON_ERROR_STOP=1
) बम । यह एक ज्ञात समस्या है, [पोस्टग्रेज डेवलपर्स द्वारा लंबाई पर चर्चा की गई है postgresql.org/message-id/… लेकिन 9.3 के रूप में तय नहीं।