2016-04-09 18 views
6

माइग्रेशन डेटाबेस में वर्तमान डेटा को बनाए रखने के दौरान एक डेटाबेस स्कीमा से दूसरे में बदलने की अनुमति देता है। Django आदेश python manage.py makemigrationsdjango 1.9+ में लगातार डेटाबेस माइग्रेशन को कैसे मर्ज करें?

हर बार makemigrations का उपयोग कर माइग्रेशन बनाने की अनुमति देता है एक नया माइग्रेशन फ़ाइल 000n..models.py फ़ाइल में पाए गए परिवर्तनों के आधार पर जोड़ा जाता है चलाया जाता है।

कभी-कभी models.py में छोटे बदलाव करने के बाद, मैं makemigrations को चलाने के लिए चाहता हूं, लेकिन एक नया माइग्रेशन बनाना नहीं चाहता क्योंकि पिछले माइग्रेशन का उपयोग नहीं किया गया है, जो मुख्य रूप से चलने के कारण उन्हें विलय करने की अनुमति देता है उत्पादन में प्रत्येक माइग्रेशन में बहुत समय लग सकता है जब डेटाबेस में बहुत सारे डेटा होते हैं इसलिए हाथ से पहले माइग्रेशन विलय करना बेहतर हो सकता है।

वहाँ एक नया माइग्रेशन 000n .. मौजूदा माइग्रेशन 000 (n-1) .. के साथ विलय करने की अनुमति के लिए एक रास्ता है?

उत्तर

8

जो आदेश आप खोज रहे हैं वह squashmigrations है। यह किसी दिए गए ऐप के सभी अनुपयुक्त माइग्रेशन को एक फ़ाइल में विलय कर देगा।

1

मैं makemigrations चलाना चाहते हैं, लेकिन एक नया माइग्रेशन बनाया होने के लिए नहीं करना चाहती क्योंकि पिछले माइग्रेशन अभी तक उपयोग नहीं किया गया है

यह एक समस्या नहीं है, Django के लिए ऊपर से माइग्रेशन चलाता है नीचे, अर्थ: आपकी नवीनतम माइग्रेशन फ़ाइल तब तक प्रतीक्षा करेगी जब तक कि पिछली माइग्रेशन फ़ाइलों को नहीं चलाया जाता।

क्योंकि चल उत्पादन में प्रत्येक माइग्रेशन समय का एक बहुत ले जा सकते हैं जब वहाँ डेटाबेस

आप डेटाबेस में कितना डेटा की क्या ज़रूरत है में डेटा का एक बहुत है? यदि वास्तव में बहुत कुछ है, तो आपके पास पहले से ही प्रतिकृतियां और अनावश्यक डीबी सर्वर होना चाहिए। इस मामले में, पाठ को स्विच करें और लिखें, दास सर्वर कहें, मास्टर में माइग्रेशन चलाएं। और उसके बाद यातायात को वापस मास्टर पर स्विच करें, और इससे पहले सुनिश्चित करें कि उनके बीच अंतराल 0 है और नई स्कीमा उनके बीच ठीक से दोहराया गया है

+1

मैंने इस सवाल को इतनी अच्छी तरह से फ्रेम नहीं किया है (अब इसे दोहराया गया है)। मुझे पता है कि माइग्रेशन अनुक्रम में लागू होते हैं। जो मैं कहने की कोशिश कर रहा था वह यह था कि यदि 2 माइग्रेशन अभी तक लागू नहीं किए गए हैं तो हाथ से पहले उन्हें विलय करने और फिर उन्हें लागू करने के बजाए उन्हें एक साथ चलाने में कुछ फायदा हो सकता है। इस उत्तर का दूसरा भाग दिलचस्प है! –

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