मैं अपनी डंप फ़ाइल को पुनर्स्थापित करने का प्रयास कर रहा हूं, लेकिन इससे त्रुटि हुई:
psql:psit.sql:27485: invalid command \N
क्या कोई हल है? मैंने खोज की, लेकिन मुझे स्पष्ट उत्तर नहीं मिला।
मैं अपनी डंप फ़ाइल को पुनर्स्थापित करने का प्रयास कर रहा हूं, लेकिन इससे त्रुटि हुई:
psql:psit.sql:27485: invalid command \N
क्या कोई हल है? मैंने खोज की, लेकिन मुझे स्पष्ट उत्तर नहीं मिला।
जवाबों:
Postgres NULL मान के लिए विकल्प के रूप में "\ N" का उपयोग करता है। लेकिन सभी psql कमांड backslash "" प्रतीक द्वारा शुरू होता है। तो आप यह संदेश प्राप्त कर सकते हैं, जब संभवत: कॉपी स्टेटमेंट विफल हो जाता है, लेकिन डंप का लोड जारी रहता है। यह संदेश केवल गलत अलार्म है। COPY स्टेटमेंट विफल होने के कारण से पहले आपको एक लाइन खोजनी होगी।
Psql को "पहली त्रुटि पर रोकना" मोड में और त्रुटि खोजने के लिए स्विच करना संभव है:
psql -v ON_ERROR_STOP=1
create table...
शुरू में विफल रहता है, लेकिन लोडिंग जारी है।
(pg_restore ... | psql ...) 2>&1 | less
बाइनरी डंप से पुनर्स्थापित करने का प्रयास करते समय मैं एक ही त्रुटि संदेश जाता हूं। मैं बस pg_restore
अपने डंप को पुनर्स्थापित करता था और पूरी तरह से \N
त्रुटियों से बचता था , जैसे
pg_restore -c -F t -f your.backup.tar
स्विच का स्पष्टीकरण:
-f, --file=FILENAME output file name
-F, --format=c|d|t backup file format (should be automatic)
-c, --clean clean (drop) database objects before recreating
मैं अतीत में भी इस त्रुटि में भाग चुका हूं। पावेल सही है, यह आमतौर पर एक संकेत है कि pg_restore द्वारा बनाई गई स्क्रिप्ट में कुछ विफल हो रहा है। सभी "/ N" त्रुटियों के कारण, आप आउटपुट के शीर्ष पर वास्तविक समस्या नहीं देख रहे हैं। मैं सुझाव देता हूँ:
pg_restore
--table=orders full_database.dump > orders.dump
) सम्मिलित करनाorders.dump
रिकॉर्ड का एक गुच्छा हटाएं और खोलें )मेरे मामले में, मेरे पास अभी तक "hstore" एक्सटेंशन स्थापित नहीं था, इसलिए स्क्रिप्ट बहुत ऊपर से विफल हो रही थी। मैंने गंतव्य डेटाबेस पर hstore स्थापित किया, और मैं व्यवसाय में वापस आ गया।
आप INSERTS कथनों का उपयोग करके अपने डंप को उत्पन्न कर सकते हैं, --inserts पैरामीटर के साथ।
आज मेरे साथ भी वही हुआ। मैं --inserts कमांड के साथ डंपिंग कर मुद्दे को हैंडल करता हूं।
मैं क्या कर रहा हूँ:
1) आवेषण के साथ pg_dump:
pg_dump dbname --username=usernamehere --password --no-owner --no-privileges --data-only --inserts -t 'schema."Table"' > filename.sql
2) psql (अपनी डंप की गई फ़ाइल को पुनर्स्थापित करें)
psql "dbname=dbnamehere options=--search_path=schemaname" --host hostnamehere --username=usernamehere -f filename.sql >& outputfile.txt
नोट -1) सुनिश्चित करें कि outputfile जोड़ने से आयात की गति बढ़ जाएगी।
नोट -2) Psql के साथ आयात करने से पहले ठीक उसी नाम और कॉलम के साथ तालिका बनाना न भूलें।
मेरे हाल के अनुभव में, यह त्रुटि तब संभव है जब वास्तविक समस्या का भागने के पात्रों या नई कहानियों से कोई लेना-देना नहीं है। मेरे मामले में, मैंने डेटाबेस ए के साथ एक डंप बनाया
pg_dump -a -t table_name > dump.sql
था और इसे डेटाबेस बी के साथ पुनर्स्थापित करने की कोशिश कर रहा था
psql < dump.sql
(उचित ईएनवी संस्करण को अपडेट करने के बाद, निश्चित रूप से)
मुझे आखिरकार पता चला कि यह डंप था, हालांकि यह data-only
( -a
विकल्प था) , ताकि टेबल संरचना स्पष्ट रूप से डंप का हिस्सा नहीं है), स्कीमा-विशिष्ट था। इसका मतलब था कि मैन्युअल रूप से डंप को संशोधित किए बिना, मैं schema1.table_name
पॉप्युलेट से उत्पन्न डंप का उपयोग नहीं कर सकता था schema2.table_name
। डंप को मैन्युअल रूप से संशोधित करना आसान था, स्कीमा पहले 15 लाइनों या तो में निर्दिष्ट है।
मेरे लिए SUSE 12 पर postgreSQL 10 का उपयोग करके, मैंने invalid command \N
डिस्क स्थान बढ़ाकर त्रुटि को हल किया । डिस्क स्थान की कमी मेरे लिए त्रुटि पैदा कर रही थी। आप बता सकते हैं कि क्या आप डिस्क स्थान से बाहर हैं यदि आप फ़ाइल सिस्टम को देखते हैं तो आपका डेटा df -h
आउटपुट में जा रहा है । यदि फ़ाइल सिस्टम / माउंट 100% उपयोग में है, तो कुछ करने के बाद psql -f db.out postgres
(देखें https://www.postgresql.org/docs/current/static/app-pg-dumpall.html ) आपको डिस्क स्थान उपलब्ध होने की संभावना है ।
मुझे एक ही समस्या थी, मैंने एक नया डेटाबेस बनाया और invalid command \N
psql के साथ पुनर्स्थापित किया। मैंने पुराने डेटाबेस के साथ एक ही टेबलस्पेस सेट करके इसे हल किया।
उदाहरण के लिए, पुराने डेटाबेस बैकअप में टेबलस्पेस "pg_default" था, मैंने उसी डेटाबेस को नए डेटाबेस में परिभाषित किया, और उपरोक्त त्रुटि हो गई!
मैंने इन सभी उदाहरणों का अनुसरण किया और वे सभी त्रुटि के साथ विफल हुए जिनके बारे में हम बात कर रहे हैं:
Postgres में एक डेटाबेस से दूसरे में टेबल कॉपी करें
क्या काम के साथ वाक्य रचना -C था , यहाँ देखें:
pg_dump -C -t tableName "postgres://$User:$Password@$Host:$Port/$DBName" | psql "postgres://$User:$Password@$Host:$Port/$DBName"
इसके अलावा अगर दोनों के बीच अलग-अलग स्कीमें हैं, तो मुझे लगता है कि एक डीबी के स्कीमा को बदलने के लिए दूसरों को मिलान करने के लिए टेबल की प्रतियां काम करने के लिए आवश्यक हैं, जैसे:
DROP SCHEMA public;
ALTER SCHEMA originalDBSchema RENAME TO public;