के साथ ऐप स्टोर में नया संस्करण अपडेट करना मैंने ऐप स्टोर (संस्करण 1.0) पर एक ऐप अपलोड किया है। मेरा ऐप कुछ डेटा स्टोर करने के लिए एक एसक्लाइट डेटाबेस का उपयोग कर रहा है। अब, मैंने डेटाबेस में कुछ बदलाव किए हैं (मैंने अपने डीबी में टेबल में से एक में 2 या 3 नए कॉलम जोड़े हैं)। मैं अपने ऐप के पिछले संस्करण को नए संस्करण 1.1 (जिसमें विभिन्न डीबी संरचना है) के साथ अद्यतन करना चाहता हूं। अब, जब उपयोगकर्ता पहले से ही संस्करण 1.0 का उपयोग कर रहे हैं, तो ऐप को संस्करण 1.1 में अपग्रेड कर दिया गया है, डीबी ऐप सैंडबॉक्स में पहले से मौजूद है और इसलिए, ऐप संस्करण 1.1 पर इंगित कर रहा है, लेकिन मेरा डीबी अभी भी पुराना है। मैं पुराने डेटा के साथ नया डीबी चाहता हूं, यदि कोई हो। कृपया मेरी मदद करें। धन्यवाद।विभिन्न एसक्लाइट डीबी संरचना
उत्तर
sqlite उपयोगकर्ता_वर्जन संपत्ति के रूप में कुछ कहा जाता है, तो आप अपने एप डीबी के वर्तमान स्कीमा संस्करण के लिए क्वेरी करने के लिए PRAGMA user_version
निष्पादित कर सकते हैं। यह प्रश्न शुरुआत में लिख सकता है जब आपका ऐप शुरू होता है।
इस उपयोगकर्ता_वर्जन को अद्यतन करने के लिए अद्यतन अद्यतन PRAGMA user_version = version_num
;
जब भी आप स्क्लाइट डीबी बनाते हैं, तो यह संपत्ति उपयोगकर्ता_वर्जन को रखने का सबसे अच्छा अभ्यास है, ताकि जब आप भविष्य में अपग्रेड कर रहे हों तो आप वर्तमान मूल्य से पूछ सकते हैं। जांचें कि उसे क्या करना है और शेष स्कीमा संस्करण को अपग्रेड करने के लिए शेष परिवर्तन या तालिकाओं को निष्पादित करना है।
उदाहरण के लिए:
पहली रिलीज में मैं col1 साथ table1 बनाने के लिए, col2
मैं table1 बनाने के लिए एसक्यूएल निष्पादित और एक बार इसे सफलतापूर्वक किया जाता है, मैं pragma user_version निष्पादित = 1. तो यह इंगित करेंगे मेरी वर्तमान स्कीमा संस्करण 1
भविष्य के रिलीज मैं नई col3 जोड़ने में है, मैं, 2
मैं पहली बार क्वेरी user_version करने के लिए अपने स्कीमा संस्करण को बदलने की जरूरत है कि यह मूल्य है की जाँच करें और अगर यह 1 है, तो आप को बदलने चलाने की आवश्यकता जोड़ने के लिए स्क्रिप्ट नया कॉलम और उपयोगकर्ता संस्करण 2.
अपने मामले में, चूंकि आपने पहले उपयोगकर्ता_वर्जन सेट नहीं किया है, इसलिए अपग्रेड परिदृश्य बनाम नए इंस्टॉल को अलग करना मुश्किल होगा। तो अब आप मान सकते हैं कि डीबी मौजूद है या नहीं, यह परिदृश्य को अपग्रेड कर रहा है और स्क्रिप्ट को निष्पादित करता है और यदि नहीं लगता है कि यह एक नया परिदृश्य स्थापित करें और स्क्रिप्ट बनाएं चलाएं। लेकिन देखें कि भविष्य में कम से कम अपनी समस्या को हल करने के लिए आप उपर्युमा का उपयोग कर सकते हैं या नहीं।
डेटाबेस स्कीमा को अद्यतन और बनाए रखने का एक अच्छा तरीका प्रतीत होता है, मैं इसे अत्यधिक कोशिश करूँगा। –
यदि आप पुरानी डीबी है तो आप लॉन्च पर जांच सकते हैं, और यदि नई संरचना (अस्थायी नाम के साथ) के साथ एक नया डीबी बनाने के लिए नियमित है, तो पुराने से नए डेटा को कॉपी करें, बंद करें पुराना डीबी & इसे हटाएं, नया डीबी बंद करें, इसका नाम बदलें, फिर अंत में अपने अपडेट किए गए ऐप का उपयोग करने के लिए इसे फिर से खोलें। आसान, तेज़, & आपको ऐसा करने के लिए SQLite के गहन ज्ञान की आवश्यकता नहीं है।
लेकिन मैं यह केवल तभी करना चाहता हूं जब उपयोगकर्ता 1.0 से 1.1 तक अपग्रेड हो। जिस दृष्टिकोण को आप बता रहे हैं उसे ऐप प्रतिनिधि में ऐपडिडफिनिश लॉन्चिंग विधि में कार्यान्वित किया जाएगा और इस प्रकार, जब भी मैं अपना ऐप लॉन्च करता हूं तो कोड की इस पंक्ति को निष्पादित किया जाएगा। सही??? तो, मुझे स्क्लाइट डेटाबेस की संस्करण संख्या की तरह कुछ चाहिए। – anshul
ऐसा नहीं - आपको बस यह जांचने की आवश्यकता है कि डीबी नई संरचना है या नहीं – SomaMan
- 1. एक एसक्लाइट डीबी
- 2. कोर डेटा प्रबंधित एसक्लाइट डीबी
- 3. एसक्लाइट
- 4. एसक्लाइट
- 5. एसक्लाइट
- 6. एसक्लाइट
- 7. डेल्फी एक्सई 3 में मेमोरी रिसाव जब एसक्लाइट डीबी
- 8. एसक्लाइट को माइस्क्ल
- 9. मुझे एसक्लाइट
- 10. पायथन और एसक्लाइट 3
- 11. विभिन्न गिट शाखाओं में विभिन्न निर्देशिका संरचना बनाए रखें
- 12. पायथन डीबी-एपीआई: विभिन्न पैरास्टाइल कैसे संभालें?
- 13. एंड्रॉइड प्री-फिल एसक्लाइट डेटाबेस
- 14. आईओएस/एसक्लाइट - एनएसएलओजी
- 15. मैं एसक्लाइट 3
- 16. एंड्रॉइड - एसक्लाइट डेटाबेस
- 17. एसक्लाइट ब्राउजर एसकलाइट
- 18. नोड-एसक्लाइट 3
- 19. पाइथन एसक्लाइट टर्मिनल-डीजेंगो
- 20. निर्यात एसक्लाइट सीएसवी
- 21. एसक्लाइट डेटाबेस एंड्रॉइड
- 22. अतिरिक्त फ़ील्ड इकाई के लिए इष्टतम डीबी संरचना
- 23. डीबी संरचना को ट्रैक करने के लिए सही उपकरण
- 24. FOSUserBundle: पुराने पासवर्ड/पुराने डीबी संरचना से माइग्रेशन
- 25. NHibernate: विभिन्न सर्वरों पर एकाधिक डीबी में मैपिंग इकाइयों w/o डीबी लिंक
- 26. विभिन्न संरचना के साथ एक तालिका में MySQL माइग्रेट करना
- 27. हास्केल: विभिन्न फ़ंक्शन संरचना से प्रदर्शन में अंतर?
- 28. विभिन्न संरचना विशेषता 32 बिट या 64 बिट
- 29. पायथन बर्कले डीबी/स्क्लाइट
- 30. एंड्रॉइड - एसक्लाइट डेटाबेस से सरणी सूची में
मेरा उत्तर यहां देखें: http://stackoverflow.com/a/9851554/108574 डेटाबेस उन्नयन रणनीति के लिए। –
@HeShiming धन्यवाद दोस्त। लेकिन मैंने ऐप स्टोर पर संस्करण 1.0 पहले ही अपलोड कर लिया है और इसमें मेटाडेटा टेबल नहीं है (जैसा कि आपने सुझाव दिया है, डेटाबेस संस्करण को संग्रहीत करने के लिए)। अब, मैं एक नया संस्करण अपलोड करना चाहता हूं और डीबी संरचना में बदलाव आया है। तो, अब मैं इसे कैसे प्राप्त कर सकता हूं? – anshul
अच्छी तरह से विधि अभी भी मान्य है। आपको केवल चयन कथन के वापसी मूल्य की जांच करके मेटाडेटा तालिका के अस्तित्व की जांच करने की आवश्यकता है। फिर यदि यह अस्तित्व में नहीं है, तो एक बनाएं। –