2012-06-06 7 views
6

मैं निम्नलिखित changeSet को तरल पदार्थ में निष्पादित करने की कोशिश कर रहा हूं जो एक अनुक्रमणिका बनाना चाहिए। यदि सूचकांक मौजूद नहीं है, तो इसे चुपचाप विफल होना चाहिए:लिक्विबेस परिवर्तन विफल के साथ सेट करेंऑनरर = "झूठी" हमेशा दौड़ती है?

<changeSet failOnError="false" author="sys" id="1"> 
    <createIndex unique="true" indexName="key1" tableName="Table1"> 
     <column name="name" /> 
    </createIndex> 
</changeSet> 

अभी तक, बहुत अच्छा है। समस्या यह है कि, changeSet DATABASECHANGELOG तालिका में लॉग इन नहीं है और हर बार तरल पदार्थ चलाने के लिए निष्पादित किया जाता है। तरल पदार्थ दस्तावेज के अनुसार और उदा। नाथन वॉक्सलैंड से this answer मैंने सोचा कि परिवर्तन को डेटाबासचैंजेल टेबल में भागने के रूप में चिह्नित किया जाना चाहिए। इसके बजाए यह बिल्कुल लॉग नहीं है और जैसा कि मैंने हर बार तरल पदार्थ चलाते समय निष्पादित करने से पहले कहा था (और हर बार फिर से विफल रहता है)।

क्या मुझे कुछ याद आ रही है?

(मैं डीबीएमएस के रूप में MySQL का उपयोग कर रहा)

उत्तर

3

answer Nathen Voxland द्वारा दिए गए में उन्होंने डेटाबेस की स्थिति की जांच करने के changeset चलाने से पहले एक precondition का उपयोग करने का अधिक सही दृष्टिकोण की सिफारिश की।

ऐसा लगता है कि विफलता को अनदेखा करना एक बुरा विचार है .... मतलब है कि आप डेटाबेस कॉन्फ़िगरेशन को पूरी तरह से नियंत्रित नहीं करते हैं .... "failOnError" पैरामीटर तरल पदार्थ जारी रखने की अनुमति देता है। निष्पादित के रूप में एक परिवर्तन को रिकॉर्ड करने के लिए निर्माण के लिए बुरा विचार नहीं होगा, अगर वास्तव में ऐसा नहीं हुआ क्योंकि कोई त्रुटि हुई?

+0

मैं पूरी तरह से आपके साथ हूं, पूर्व शर्त का उपयोग करके भी मेरी राय में सही दृष्टिकोण है। आखिरकार, मैंने अपने 'चेंजसेट' के साथ ऐसा किया है (हालांकि अनन्य कॉनस्ट्रेनटएक्सिस्ट्स पूर्व शर्त गायब है, लेकिन यह एक और तथ्य है)। मैं बस 'failOnError = "false" विशेषता की मेरी अपेक्षाओं पर ठोकर खाई और मैंने खुद से पूछा कि वर्णित व्यवहार एक बग या सुविधा है;) – ebi

+1

दुर्भाग्य से ओरेकल गैर-शून्य के लिए एक पूर्व शर्त मेरे लिए काम नहीं करती है क्योंकि जांच एक गैर-शून्य कॉलम तरल पदार्थ द्वारा समर्थित नहीं है। –

+0

मैं इसे [dev-null] (https://stackoverflow.com/users/1436741/dev-null) की तरफ से पोस्ट कर रहा हूं जिसने इस टिप्पणी को उत्तर के रूप में पोस्ट किया है; _T यह पिछले उत्तर में st_jeff की टिप्पणी से संबंधित है (लेकिन मेरे पास कोई टिप्पणी करने के लिए 50 प्रतिष्ठा नहीं है): विफल करने के लिए एक अन्य उपयोग केसऑनरर: यदि आप ऑरैकल में एक अनूठी बाधा छोड़ देते हैं, तो संबंधित इंडेक्स केवल तभी छोड़ दिया जाता है यदि यह बाधा से नया है। तो बाधा छोड़ने के बाद एक ड्रॉप इंडेक्स स्टेटमेंट के परिणामस्वरूप index._ की उम्र के आधार पर त्रुटि हो सकती है या नहीं – Bugs

संबंधित मुद्दे