मैं कमोबेश ठीक उसी मुद्दे पर अटका हुआ हूं और मुझे इस मामले में एक खुला दोष मिला है जो समझ में आता है...
https://code.google.com/p/android/issues/detail?id=174566
मेरा समाधान - हालांकि सबसे अच्छा समाधान नहीं है - डेटाबेस संशोधन को कभी भी चरणबद्ध नहीं करना है और इसे स्वयं ट्रैक करना है, इस प्रकार कभी भी onUpgrade()
को कॉल नहीं करना है , और ऐप को अपडेट करते समय मैन्युअल रूप से अपग्रेड करें।
वैकल्पिक रूप से यदि आपके पास एक छोटा डीबी है जो केवल पढ़ा जाता है, तो आप प्रत्येक onCreate()
पर संपत्तियों में डीबी की प्रतिलिपि ट्रिगर कर सकते हैं DBHelper
. में वर्ग, लेकिन यह अवांछित समस्याएँ दे सकता है यदि फ़ाइल सिस्टम भरा हुआ है, इसलिए केवल बेहतर समाधान की तलाश में ऐसा करें।
@Override
public void onCreate(SQLiteDatabase db) {
// Workaround for Issue 174566
myContext.deleteDatabase(DB_NAME);
try {
copyDataBase();
}
catch(IOException e) {
System.out.println("IOException " + e.getLocalizedMessage());
}
}
मेरा ऐप अब अपग्रेड हो गया है जैसा कि मेरे वर्कअराउंड के साथ होना चाहिए और यह देखते हुए कि इस दोष को मूल रूप से उठाए जाने में कितना समय लगा है, इसे कभी भी ठीक नहीं किया जा सकता है...
मुझे खेद है कि यह समस्या का पूर्ण समाधान नहीं है, लेकिन यह कम से कम आगे का रास्ता है।