पर असफल होने का कोई तरीका है कि एसक्यूएल स्क्रिप्ट निष्पादित करते समय यह स्क्रिप्ट पर पहली त्रुटि का सामना करते समय बंद हो जाता है, यह आमतौर पर पिछली त्रुटियों के बावजूद जारी रहता है।पोस्टग्रेस एसक्यूएल स्क्रिप्ट त्रुटि
धन्यवाद
पर असफल होने का कोई तरीका है कि एसक्यूएल स्क्रिप्ट निष्पादित करते समय यह स्क्रिप्ट पर पहली त्रुटि का सामना करते समय बंद हो जाता है, यह आमतौर पर पिछली त्रुटियों के बावजूद जारी रहता है।पोस्टग्रेस एसक्यूएल स्क्रिप्ट त्रुटि
धन्यवाद
यह बिल्कुल आप क्या चाहते हैं नहीं है, लेकिन अगर आप begin transaction;
साथ अपनी स्क्रिप्ट शुरू करने और end transaction;
के साथ समाप्त, यह वास्तव में पहली त्रुटि के बाद सब कुछ को छोड़ देगा, और फिर इसे सब कुछ यह त्रुटि से पहले किया था रोलबैक होगा ।
मुझे लगता है कि आप psql
का उपयोग कर रहे हैं, यह आपके ~/.psqlrc
फ़ाइल में जोड़ने के लिए आसान हो सकता है।
\set ON_ERROR_STOP on
इससे पहले त्रुटि पर इसे रोक दिया जाएगा। यदि आपके पास यह नहीं है, तो लेनदेन के साथ भी यह आपकी स्क्रिप्ट को निष्पादित करेगा लेकिन आपकी स्क्रिप्ट के अंत तक सबकुछ विफल हो जाएगा।
और शायद आप लेनदेन का उपयोग करना चाहते हैं क्योंकि पॉल ने कहा था। यदि आप स्क्रिप्ट को बदलना नहीं चाहते हैं तो psql --single-transaction ...
के साथ भी किया जा सकता है।
तो पूर्ण उदाहरण के लिए, अपने .psqlrc में ON_ERROR_STOP साथ:
psql --single-transaction --file /your/script.sql
भले ही लेनदेन विफल हो जाए, भले ही psql कमांड की निकास स्थिति अभी भी 0. –
है, भले ही '- सिंगल-ट्रांज़ेक्शन 'का उपयोग किया गया हो,' -v ON_ERROR_STOP = 1' अभी भी एक शून्य शून्य स्थिति के लिए आवश्यक है – bitek
मैं समाधान .psqlrc के लिए निम्न जोड़ने के लिए लगता है कि पूर्णता से दूर है
\set ON_ERROR_STOP on
वहाँ बहुत अधिक सरल और मौजूद है सुविधाजनक तरीका - पैरामीटर के साथ psql का उपयोग करें:
psql -v ON_ERROR_STOP=1
का उपयोग करने के लिए बेहतरपैरामीटर .psqlrc फ़ाइल उपयोग बंद कर रहा है। मेरे लिए पूरी तरह से काम करता है
पेज। पीटर Eisentraut से महान पद में पाया समाधान। धन्यवाद, पीटर! http://petereisentraut.blogspot.com/2010/03/running-sql-scripts-with-psql.html
'-v ON_ERROR_STOP = ON' कम से कम 9.2 के साथ भी काम करता है। मुझे संदेह है कि [बूलियन "सत्य"] के किसी भी प्रकार (http://www.postgresql.org/docs/9.2/static/datatype-boolean.html) की अनुमति है। – jpmc26
यह इंटरैक्टिव मोड में काम नहीं करता है, जिसने मुझे एक मिनट के लिए भ्रमित कर दिया। –
धन्यवाद, जोड़ -v ON_ERROR_STOP = 1 -x मेरे लिए काम करता है। – netto
सच है, लेकिन, यह अभी भी सब कुछ पार्स करता है। और यदि आप केवल * दूसरा * लेनदेन करना चाहते हैं तो पहले सफल होने पर, यह काम नहीं करेगा। – Wildcard