मैं निम्नलिखित 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 का उपयोग कर रहा)
मैं पूरी तरह से आपके साथ हूं, पूर्व शर्त का उपयोग करके भी मेरी राय में सही दृष्टिकोण है। आखिरकार, मैंने अपने 'चेंजसेट' के साथ ऐसा किया है (हालांकि अनन्य कॉनस्ट्रेनटएक्सिस्ट्स पूर्व शर्त गायब है, लेकिन यह एक और तथ्य है)। मैं बस 'failOnError = "false" विशेषता की मेरी अपेक्षाओं पर ठोकर खाई और मैंने खुद से पूछा कि वर्णित व्यवहार एक बग या सुविधा है;) – ebi
दुर्भाग्य से ओरेकल गैर-शून्य के लिए एक पूर्व शर्त मेरे लिए काम नहीं करती है क्योंकि जांच एक गैर-शून्य कॉलम तरल पदार्थ द्वारा समर्थित नहीं है। –
मैं इसे [dev-null] (https://stackoverflow.com/users/1436741/dev-null) की तरफ से पोस्ट कर रहा हूं जिसने इस टिप्पणी को उत्तर के रूप में पोस्ट किया है; _T यह पिछले उत्तर में st_jeff की टिप्पणी से संबंधित है (लेकिन मेरे पास कोई टिप्पणी करने के लिए 50 प्रतिष्ठा नहीं है): विफल करने के लिए एक अन्य उपयोग केसऑनरर: यदि आप ऑरैकल में एक अनूठी बाधा छोड़ देते हैं, तो संबंधित इंडेक्स केवल तभी छोड़ दिया जाता है यदि यह बाधा से नया है। तो बाधा छोड़ने के बाद एक ड्रॉप इंडेक्स स्टेटमेंट के परिणामस्वरूप index._ की उम्र के आधार पर त्रुटि हो सकती है या नहीं – Bugs