के बीच SQLite अंतर मेरे पास एक एंड्रॉइड ऐप है, और अब तक मेरा पूरा परीक्षण मेरे फ्रायओ फोन पर रहा है। मैंने एम्यूलेटर में 1.6 और 2.1 के खिलाफ परीक्षण शुरू कर दिया है, और यह स्टार्टअप पर दुर्घटनाग्रस्त हो गया है। यह मेरे विचारों में से एक में कॉलम नहीं ढूंढ सकता है।एंड्रॉइड 2.1 और 2.2
05-17 23:31:31.446: ERROR/AndroidRuntime(198): Caused by:
android.database.sqlite.SQLiteException: no such column:
categoryTable.currentBal: , while compiling:
SELECT SUM(categoryTable.currentBal) FROM catDisplayTable
WHERE masterCategoryName != "__Hidden__"
देखने के स्कीमा इस प्रकार है:
CREATE VIEW catDisplayTable AS SELECT categoryTable._id, categoryTable.name,
categoryTable.currentBal, categoryTable.sequence, categoryTable.note,
masterCategoryTable.name AS masterCategoryName FROM categoryTable
LEFT OUTER JOIN masterCategoryTable
ON categoryTable.masterCategoryId = masterCategoryTable._id;
adb shell
साथ
विभिन्न एमुलेटर उदाहरणों से कनेक्ट कर रहा है, मैं पुष्टि की है कि (1) सही स्कीमा सभी मामलों में जगह में है, और (2) 1.6 और 2.1 में, SQLite सिर्फ इस दृश्य में कॉलम पता लगाने में असमर्थ है, के रूप में भी
SELECT categoryTable.name FROM catDisplayTable;
या
के रूप में सरल कुछ के साथSELECT name FROM catDisplayTable;
यह 2.2 पर ठीक काम करता है।
इसलिए मेरा अनुमान है कि एंड्रॉइड 2.1 और 2.2 के बीच SQLite में कुछ बदल गया है। This answer मददगार रूप से SQLite संस्करण देता है जो प्रत्येक एंड्रॉइड एपीआई स्तर के साथ भेज दिए गए थे। यह कहता है कि SQLite को 2.1 और 2.2 के बीच 3.5.9 से 3.6.22 तक अपडेट किया गया था। the SQLite release history पर देखकर, मुझे कुछ भी विशेष रूप से स्पष्ट नहीं दिख रहा है जो अंतर को समझा सकता है।
क्या कोई भी वास्तव में क्या बदल सकता है इसकी पहचान कर सकता है, और सुझाव दे सकता है कि मैं इसके आसपास कैसे काम कर सकता हूं, इसलिए मेरा कोड प्री-फ़्रायओ डिवाइस पर काम करता है?
मैं है मैं बस यह सुनिश्चित करने की कोशिश कर रहा हूं कि आपने स्पष्ट रूप से छोड़ा नहीं है। क्या आपने कोशिश करने से पहले एमुलेटर/डिवाइस पर "साफ डेटा" किया था? हो सकता है कि आपको पुराना देव संस्करण मिल गया हो और इस दृश्य में उस एमुलेटर/डिवाइस पर कॉलम नहीं है? – katit
@ katit हां, पूरी तरह से साफ करें। मैंने विशेष रूप से इसका परीक्षण करने के लिए नए खाली एवीडी बनाए। –