2015-08-18 7 views
5

मैंने अपने आवेदन की पहली रिलीज में शुगरोरम का उपयोग किया। अब, मैं दूसरी रिलीज पर काम कर रहा हूं, जिसमें डीबी में नई टेबल शामिल हैं।चीनी ओआरएम माइग्रेशन: नई टेबल बूंद बनाएं/मौजूदा टेबल को फिर से बनाएं

शुगरोरम documentation के अनुसार "चीनी स्वचालित रूप से नई इकाइयों के लिए टेबल तैयार करेगी, इसलिए आपकी माइग्रेशन स्क्रिप्ट को केवल मौजूदा तालिकाओं में बदलावों को पूरा करने की आवश्यकता है।"

यहाँ मैं क्या किया है:

  1. AndroidManifest <meta-data android:name="VERSION" android:value="2" />
  2. नया रिकार्ड वर्ग बनाया गया में डीबी संस्करण में वृद्धि। public class NewModel extends SugarRecord<NewModel>

ऐप चलाते समय, चीनी ने नई तालिका बनाई, लेकिन दुर्भाग्यवश, यह स्थानीय टेबल को सहेजने वाले सभी डेटा को मिटाकर मौजूदा टेबल को भी गिरा/बनाया गया!

मैंने माइग्रेशन स्क्रिप्ट फ़ाइल 2.sql जोड़कर स्वयं को नई तालिका बनाने का भी प्रयास किया, जिसमें मेरा CREATE TABLE NEW_MODEL कथन शामिल है। दुर्भाग्य से, यह एक अपवाद फेंक दिया "तालिका पहले से मौजूद है" क्योंकि चीनी ने नई टेबल बनाई और फिर मेरी स्क्रिप्ट चलाने की कोशिश की!

कोई सुझाव?

उत्तर

11

मैं एक समाधान में आया, जिसमें से मुझे एक नया माइग्रेशन स्क्रिप्ट फ़ाइल बनाने के लिए नया संस्करण संख्या बनाना है! अब, यह मेरी पुरानी टेबल को छोड़कर/बनाने के बिना नई तालिका बनाता है।

तो, समाप्त करने के लिए:

  1. AndroidManifest में डीबी संस्करण संख्या बढ़ाएँ।
  2. अपनी नई चीनी रिकॉर्ड कक्षा बनाएं।
  3. संपत्ति/sugar_upgrades के तहत रखे गए नए डीबी संस्करण के नाम पर एक खाली माइग्रेशन स्क्रिप्ट फ़ाइल जोड़ें। (उदा। 2. एसक्यूएल)।
+0

यह आश्चर्यजनक है कि दस्तावेज में इसका उल्लेख नहीं किया गया है, मुझे सिरदर्द के बहुत सारे कारण हैं .. –

+1

यह आश्चर्यजनक है कि शुगर दस्तावेज में बहुत सी चीजों का उल्लेख नहीं किया गया है ... – Eugene

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