pg_restore: [archiver] को फ़ाइल हेडर में मैजिक स्ट्रिंग नहीं मिली


14

मैं PostgreSQL 9.1 का उपयोग कर रहा हूं और इसके साथ उत्पन्न बैकअप फ़ाइलों को पुनर्स्थापित करना चाहता हूं pg_dump:

sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name

यह कमांड एक वैध एसक्यूएल फ़ाइल उत्पन्न करता है जो किसी भी मौजूदा डेटाबेस ऑब्जेक्ट को छोड़ने के साथ शुरू होता है, फिर सभी टेबल, इंडिविजुअल, सीक्वेंस और इतने पर उत्पन्न करता है, और अंत में डेटा सम्मिलित करता है।

जब मैं इसके साथ उत्पन्न बैकअप फ़ाइल को पुनर्स्थापित करने का प्रयास करता हूं: (केवल प्रदर्शन उद्देश्यों के लिए जोड़ा गया लाइन ब्रेक)

sudo pg_restore 
    -d database_name -h 127.0.0.1 -U postgres
    --format=c --clean --create out.sql

यह विफल रहता है और प्रिंट करता है:

pg_restore: [archiver] did not find magic string in file header

उसका क्या कारण है?

जवाबों:


19

आप के साथ पुनर्स्थापित कर रहे हैं, pg_restore --format=c ...लेकिन pg_dumpइसके साथ नहीं किया --format=cगया था, यह डिफ़ॉल्ट, सादे प्रारूप के साथ किया गया था ।

से pg_dumpमैनपेज:

  -F format, --format=format
       Selects the format of the output.  format can be one of the
       following:

       p, plain
           Output a plain-text SQL script file (the default).

सादे प्रारूप में एक डंप को सीधे psqlकमांड-लाइन टूल को खिलाया जाना चाहिए , pg_restoreयह नहीं जानता कि यह क्या है, जो इस त्रुटि संदेश का कारण है: फ़ाइल हेडर में जादू स्ट्रिंग नहीं मिला

आप more out.sqlशेल में डंप फ़ाइल पर सीधे देख सकते हैं और आपको पढ़ने योग्य SQL कमांड दिखाई देंगे। इसके साथ पुनर्स्थापित करें psql -f out.sql [other options]। आप संभवतः लक्ष्य डेटाबेस बनाना चाहेंगे, क्योंकि --createविकल्प pg_dumpआह्वान में मौजूद नहीं है ।

दूसरी ओर, आप डंप --format=cको इसके विकल्पों में जोड़कर पुनः स्थापित कर सकते हैं। तब वह विपरीत pg_restoreहोगा : कस्टम प्रारूप में डंप फ़ाइल की व्याख्या करने के लिए उपयोग किया जाना चाहिए।


0

एक संभावित समस्या यह है कि आपकी डेटा फ़ाइल काट दी गई है। यह देखने के लिए जांचें कि क्या आप फ़ाइल आकारों की तुलना करके पूरी फ़ाइल डाउनलोड कर रहे हैं।


0

यदि आप git-lfs का उपयोग करते हैं, तो सुनिश्चित करें कि वास्तविक फ़ाइल, सूचक नहीं है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.