2015-11-03 10 views
10

हम डेटाबेस स्कीमा माइग्रेट करने के लिए फ्लाईवे का उपयोग कर रहे हैं और हमारे पास पहले से ही 100 से अधिक माइग्रेशन स्क्रिप्ट हैं।फ्लाईवे माइग्रेशन "संपीड़ित" करने का कोई तरीका?

एक बार जब हम एक ही प्रथम संस्करण माइग्रेशन में एकाधिक माइग्रेशन को "squashed" करते हैं, तो यह विकास के दौरान ठीक है, क्योंकि हम स्कीमा को छोड़ते हैं और फिर से बनाते हैं। लेकिन उत्पादन में यह काम नहीं करेगा, क्योंकि फ्लाईवे माइग्रेशन को मान्य करने में सक्षम नहीं होगा।

मुझे इस मामले में क्या करना है, इस बारे में कोई दस्तावेज़ीकरण या सर्वोत्तम अभ्यास नहीं मिला। समस्या यह है कि फ़ाइल मात्रा लगातार बढ़ती है, मैं हर बार हजारों माइग्रेशन फ़ाइलों को नहीं देखना चाहता, अनिवार्य रूप से यदि उत्पादन पहले से ही नवीनतम संस्करण में है। मेरा मतलब है, माइग्रेशन स्क्रिप्ट्स जिनमें संस्करण संस्करण है जो उत्पादन में संस्करण से कम है, हमारे लिए अप्रासंगिक है, यह बहुत ही अच्छा होगा अगर हम उन फ़ाइलों को एक ही माइग्रेशन में स्क्वैश कर सकें।

हम MySQL का उपयोग कर रहे हैं।

हमें इसे कैसे संभालना चाहिए?

उत्तर

10

क्या यह नहीं है कि पुनः-बेसलाइनिंग क्या करेगी?

मैं अभी भी फ्लाईवे के लिए नया हूं, लेकिन इस तरह मुझे लगता है कि यह काम करेगा। कृपया इसके लिए मेरा शब्द लेने से पहले निम्नलिखित का परीक्षण करें।

schema_version तालिका हटाएं। अपनी माइग्रेशन स्क्रिप्ट हटाएं।

भागो flyway आधारभूत (इस schema_version तालिका का पुनर्निर्माण और संस्करण 1 के रूप में एक आधारभूत रिकॉर्ड कहते हैं)

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

कदम:

  1. drop table schema_version;
  2. निर्यात डेटाबेस MySQL Workbench के माध्यम से एक स्क्रिप्ट के रूप में संरचना, उदाहरण के लिए। इस स्क्रिप्ट V1__Baseline.sql
  3. नाम सभी माइग्रेशन स्क्रिप्ट हटाएँ और अपनी स्क्रिप्ट फ़ोल्डर में V1__Baseline.sql जोड़ने, तो यह
  4. भागो Flyway के "आधारभूत" आदेश
  5. हो गया Flyway के लिए केवल स्क्रिप्ट उपलब्ध
+0

इस नहीं करता है मतलब, कि यदि आप डेवलपर्स की एक टीम हैं, तो अन्य सभी डेवलपर्स को टेबल schema_version को भी छोड़ना होगा? –

+0

हां। फ्लाईवे माइग्रेशन स्क्रिप्ट के उस सेट द्वारा "प्रबंधित" प्रत्येक डेटाबेस को एक ही उपचार की आवश्यकता होगी। –

+0

बेसलाइन चलाने पर, फ्लाईवे चेक करेगा कि मौजूदा स्कीमा नई V1__Baseline.sql स्कीमा से मेल खा रही है? यदि मैं V1__Baseline.sql के विरुद्ध मौजूदा स्कीमा को सत्यापित करने के लिए फ्लाईवे नहीं चाहता हूं, तो क्या मैं schema_version तालिका में परिणामी चेकसम के साथ एक पंक्ति बना सकता हूं? – lloiacono

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