मैं अपने PostgreSQL को संस्करण 9.6 से 12 में अपग्रेड करता हूं और मैं स्प्रिंग के माध्यम से लिक्विबेस 3.8.0 का उपयोग कर रहा हूं।

डीबी अपग्रेड के बाद जब मैं अपना ऐप शुरू करता हूं, तो मुझे पहले बदलाव के लिए निम्नलिखित लिक्विबेस अपवाद मिला:

Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
     1 change sets check sum
          db.liq.xml::1555784288321-4::myuser was: 8:9df75f119833ded8765efcc910ffa071 but is now: 8:57040acff0d316c100c788531a84ae8b

अब वर्तमान परिवर्तन सेट onValidationFail="MARK_RAN" टैग के साथ सेट है, इसलिए यह विफल नहीं होना चाहिए लेकिन फिर भी मुझे यह अपवाद मिल रहा है।

 <changeSet author="myuser" id="1555784288321-4" onValidationFail="MARK_RAN">

मैं <validCheckSum> टैग सेट करके इस विशिष्ट अपवाद को हल कर सकता हूं लेकिन मुझे लगता है कि मुझे अन्य परिवर्तनों के लिए भी यही अपवाद मिलेगा। केवल एक चीज जो मैंने की वह थी मेरे पोस्टग्रेज डेटाबेस को अपग्रेड करना।

अब, डेटाबेस के फ़ंक्शन हैश का उपयोग कर तरल पदार्थ है? यदि हाँ तो यह इस व्यवहार की व्याख्या कर सकता है लेकिन ऐसा लगता है कि अन्यथा प्रत्येक प्रमुख अपग्रेड के बाद या हर बार डीबी अपने हैश फ़ंक्शन को अपडेट करेगा लिक्विबेस इस तरह व्यवहार करेगा।

1
JeyJ 30 मार्च 2020, 14:15

1 उत्तर

सबसे बढ़िया उत्तर

आप हमेशा clearCheckSums सुविधा का उपयोग कर सकते हैं। यह मौजूदा चेकसम को हटा देगा और आपके चेंजसेट को चलाए बिना उनकी पुनर्गणना करेगा।

clearCheckSums चलाने के लिए आप मावेन लक्ष्य का उपयोग कर सकते हैं:

https://www.liquibase.org/documentation/maven/maven_clearchecksums.html

या लिक्विबेस कमांड लाइन:

https://www.liquibase.org/documentation/command_line.html

दूसरा विकल्प (खराब वाला):

आप अपने चेंजसेट में <validCheckSum>ANY</validCheckSum> जोड़ सकते हैं।

यह इस मुद्दे को हल करेगा, लेकिन आप पहले से निष्पादित परिवर्तनसेट के अंदर परिवर्तनों का नियंत्रण खो देंगे। तो यह नहीं करने के लिए एक अच्छी बात है।

1
htshame 30 मार्च 2020, 15:57