15

में 2 डेटाबेस विकास ने संभाल कैसे। जाहिर है यह उत्पादन के लिए काम नहीं करेगा, तो उत्पादन में इसे संभालने का सही तरीका क्या है?प्ले फ्रेमवर्क ऐसा लगता है कि जब भी मैं अपने मॉडल बदलने के लिए, खेलने के लिए फ्रेमवर्क मुझे एक स्क्रिप्ट है कि अपने पूरे स्कीमा को हटा देता है और यह पुन चलाने के लिए पूछता उत्पादन

नोट, मैं ईबीन और पोस्टग्रेस का उपयोग कर रहा हूं, और उसकेोकू पर होस्टिंग कर रहा हूं।

उत्तर

29

दुर्भाग्य Ebean केवल CREATE DDL (और नहीं UPDATE DDL) (answered on their group के रूप में) बना सकते हैं, इसलिए आप जल्द से जल्द manual evolutions करने के लिए स्विच की जरूरत है।

कुछ नियम:

  1. हमेशा बैकअप कोई भी परिवर्तन :)
  2. ebean प्लगइन का पुनर्निर्माण पूरे DDL अगर यह केवल 1.sql यह द्वारा बनाई
  3. आप दो पहले हटाने की जरूरत विकास है को लागू करने से पहले अपनी लाइव डीबी 1.sql से टिप्पणियां और अगली संख्या 2.sql, 3.sql आदि के साथ अपने विकास लिखना शुरू करें। मैन्युअल विकास पर स्विच करने से पहले जितना संभव हो उतने मॉडल/फ़ील्ड रखने की कोशिश करें। प्लगइन द्वारा सबसे बड़ा हिस्सा स्वचालित रूप से किया जाएगा।
  4. मैन्युअल विकास में ALTERS को डीआरओपी/क्रिएट के बजाय मौजूदा टेबल/कॉलम में होना चाहिए, उनके पास प्रत्येक परिवर्तन के लिए Ups और Downs होना चाहिए।
  5. प्रत्येक विकास में जितना संभव हो उतना परिवर्तन करने की कोशिश करें, फिर प्रत्येक छोटे बदलाव के लिए अलग विकास लिखना आसान है।

डी वास्तविक कभी कभी यह डीबी जीयूआई के साथ डीबी संरचना को संशोधित करने के लिए सिर्फ आसान है, वैसे भी यह एक डेवलपर के लिए मुख्य रूप से काम करता है ... जब आप अन्य डेवलपर्स लिख विकास ने बेहतर विकल्प हो जाएगा के साथ अपने कोड साझा करने के लिए की जरूरत है।

आप नए मॉडल की अगली 'बड़े' भाग जोड़ देंगे कुछ समय के बाद आप अस्थायी ऑटो DDL फिर से सक्षम और सिर्फ नए भागों की नकल करने के लिए स्थानीय Git का उपयोग कर सकते हैं। फिर अपनी क्रांति पर वापस जाएं और ईबीन प्लगइन द्वारा उत्पन्न नए हिस्सों को पेस्ट करें।

12

बेसियर ने मूल रूप से इसे काफी अच्छी तरह से समझाया। हालांकि, Play में शुरुआती के रूप में, मुझे लगता है कि एक ठोस उदाहरण के साथ थोड़ा और स्पष्टीकरण उपयोगी हो सकता है।

पहला, निम्नलिखित उदाहरण जावा के लिए है।

मान लीजिए आप अपने मॉडल दम में एक नए क्षेत्र

public String dum_str; 

गयी। उसके बाद, आप इस तरह conf/evolutions/ के तहत एक 2.sql की आवश्यकता होगी:

# --- !Ups 
ALTER TABLE dum ADD COLUMN dum_str VARCHAR(255); 

# --- !Downs 
ALTER TABLE dum DROP dum_str; 

मुझे आशा है कि यह उपयोगी होगा।

+1

अच्छा उत्तर, आगे के पाठकों के लिए, यह वैकल्पिक तालिका डम ड्रोप COLUMN dum_str है; (कृपया COLUMN नोट करें)। – Simon

-3

वर्तमान डीबी एक स्क्रिप्ट के रूप में बैकअप। जावा मॉडल में अपने बदलाव करें। चलो परिवर्तन लागू करें और डीबी फिर से बनाएं और फिर अपने डेटा को पुनर्स्थापित करें।

Attn: मौजूदा फ़ील्ड नामों को न बदलें अन्यथा यह काम नहीं करेगा।

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