रनटाइम अपवाद (स्तंभ LIST_ID मौजूद नहीं है) छोड़ दिया में शामिल होने से आ सकता है?

वोट
0

मेरे Android स्टूडियो प्रोजेक्ट में मैं एक डेटाबेस (कक्ष द्वारा प्रबंधित) लागू किया है। मेरी दाव फ़ाइल में, मैं निम्न क्वेरी जो त्रुटि का कारण बनता है है:

SELECT tab1.list_id, ... FROM  
            (SELECT list_id, ...  FROM list_table) AS tab1  
            LEFT JOIN  
            (SELECT list_id, ...  FROM list_table NATURAL JOIN product_table NATURAL JOIN list_product_table GROUP BY list_id) AS tab2  
            ON tab1.list_id = tab2.list_id  
            ORDER BY list_position ASC, tab1.list_id ASC;

त्रुटि कहते हैं java.lang.IllegalArgumentException: column '`list_id`' does not exist। त्रुटि फ़ाइल है, जो स्वचालित रूप से कक्ष द्वारा बनाया गया था के लिए अंक।

...
return __db.getInvalidationTracker().createLiveData(new String[]{list_table,product_table,list_product_table}, false, new Callable<List<ShoppingListDisplayValues>>() {
      @Override
      public List<ShoppingListDisplayValues> call() throws Exception {
        final Cursor _cursor = DBUtil.query(__db, _statement, false, null);
        try {
          final int _cursorIndexOfPosition = CursorUtil.getColumnIndexOrThrow(_cursor, list_position);
          final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, list_id);
          ...

अधिक विशिष्ट, लाइन के लिए त्रुटि अंक होने के लिए:

final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, list_id);

अब मेरे सवाल बाएं से इस त्रुटि परिणाम शामिल हो सकते हैं, है? वास्तव में अजीब बात यह है कि कोड, है काम करता है पर कुछ उपकरणों और अन्य नहीं पर। अगर किसी को एक विचार है, वास्तव में खुशी होगी।

02/12/2019 को 23:55
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

तो, कुछ घंटों डिबगिंग के बाद मैं त्रुटि और एक समाधान मिल गया।

त्रुटि मूल

कमरे का हठ पुस्तकालय में त्रुटि निहित है। निम्नतर API के साथ उपकरणों पर इस पुस्तकालय का उपयोग करते समय 27 से (कम से कम इस मैं क्या लगता है कि है, के बाद से मैं अलग API के साथ 3 उपकरणों का परीक्षण किया है), तो एक अपवाद फेंक दिया जाता है अगर आप अपने में एक तालिका उपसर्ग का उपयोग SELECTबयान। द्वारा "तालिका उपसर्ग" मैं उदाहरण के लिए मतलब tab1.में tab1.list_id

समाधान:

बस स्तंभ जो एक मेज उपसर्ग के लिए एक उपनाम का उपयोग करें। के बजाय

SELECT tab1.list_id, ... FROM

लिखो

SELECT tab1.list_id AS list_id, ... FROM

03/12/2019 को 01:38
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more