Postgres: sql फ़ाइल निष्पादित करते समय गैर शून्य निकास कोड?


34

मैं एक शेल स्क्रिप्ट लिख रहा हूं जो 2 रूपों का उपयोग करके psql को कॉल करता है ... एक कमांड (-c) द्वारा है, दूसरा फ़ाइल (-f) द्वारा है।

उदा। psql -c "टेबल फू बनाएं (बार पूर्णांक)"

psql -f foobar.sql

इन रूपों के बीच एक अंतर यह है कि कमांड (-c) द्वारा एक कॉल एक गैर-शून्य निकास कोड लौटाता है यदि कोई त्रुटि सामने आती है, जबकि फ़ाइल (-f) द्वारा कॉल हमेशा शून्य वापस करने के लिए लगता है।

मैं सोच रहा हूँ कि क्या इस व्यवहार के लिए कोई समाधान है? (यदि फ़ाइल निष्पादित करते समय कोई त्रुटि होती है तो गैर-शून्य लौटें)।

धन्यवाद।

जवाबों:


37

आप नीचे दिए गए कथन का उपयोग कर सकते हैं।

psql -v ON_ERROR_STOP=1 -f foobar.sql

यह सही रिटर्न कोड लौटाएगा यहां तक ​​कि foobar.sqlफ़ाइल फ़ाइल ON_ERROR_STOPके शीर्ष पर सक्षम नहीं होती है।


21

मुझे पता चला कि इसे कैसे हल किया जाए।

मुझे ON_ERROR_STOPफ़ाइल के शीर्ष पर सक्षम करने की आवश्यकता है ।

उदाहरण:

\set ON_ERROR_STOP true

+1 मैनपेज देखने के लिए :)
सर्वरहोर

सबसे अच्छा समाधान के लिए +1 क्योंकि यह मुझे स्क्रिप्ट में चर सेट करने की अनुमति देता है , इसलिए मैं भरोसा कर सकता हूं कि यह हमेशा सही ढंग से चलता है और रनटाइम संदर्भ के बारे में चिंता करने की ज़रूरत नहीं है।
ब्रैंडन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.