2016-08-20 6 views
9

में किया गया यह त्रुटि पूरे स्रोत को 5.3 संस्करण में ले जाने के बाद आई, और मैं अपने सिर को दो घंटे से अधिक समय तक खरोंच कर रहा हूं अभी व।लैरवेल 5.3: सिंटेक्स त्रुटि या पहुंच उल्लंघन: 1463 गैर-समूह फ़ील्ड 'दूरी' का उपयोग हैविंग क्लॉज

POI::select('*', DB::raw("SQRT(POW((x - {$this->x}),2) + POW((y - {$this->y}),2)) AS distance")) 
     ->where('status', Config::get('app.poi_state.enabled')) 
     ->whereNotIn('id', $excludePOIList) 
     ->having('distance', '<=', $distance) 
     ->orderBy('distance')->get(); 

यह काम करने से पहले अभी नवीनीकरण फेंक देता है लगता है:

सिंटेक्स त्रुटि या पहुँच उल्लंघन: 1463 गैर समूहीकरण क्षेत्र 'दूरी'

तो मैं वाक्पटु क्वेरी इस तरह का है हैविंग क्लॉज में उपयोग किया जाता है (एसक्यूएल: चयन करें *, एसक्यूआरटी (पाउ ((एक्स - 860.0000), 2) + पाउ ((वाई - 105.0000), 2)) poi से दूरी के रूप में जहां status = 1 और id नहीं (1) distance < = 6 आदेश द्वारा distance एएससी)

मैं अगर ONLY_FULL_GROUP_BY मोड अपने सर्वर पर सक्षम है की जाँच करना चाहते थे, लेकिन ऐसा नहीं है ...

चयन @@ sql_mode NO_ENGINE_SUBSTITUTION

MySQL वर्कबेंच में एक ही क्वेरी ठीक काम करती है। क्या चल रहा है?

उत्तर

30

चेक/mysql के टूटने में database.php फ़ाइल है कि सख्त गलत है:: हालांकि आप कहां खंड में दूरी हालत स्थानांतरित कर सकते हैं

'strict' => false, 

तो सच है, में डाल असत्य।

+3

यह था, जाहिर है कि सख्त मोड एल 5.3 – user3343366

+0

में डिफ़ॉल्ट रूप से सक्षम है, लेकिन इस 'सख्त' विकल्प के बारे में कोई स्पष्टीकरण क्या है और इसका दुष्प्रभाव क्या है? –

+0

सख्त मोड नियंत्रित करता है कि कैसे MySQL डेटा-चेंज स्टेटमेंट्स जैसे INSERT या UPDATE में अमान्य या अनुपलब्ध मानों को संभालता है। कई कारणों से एक मूल्य अमान्य हो सकता है। उदाहरण के लिए, इसमें कॉलम के लिए गलत डेटा प्रकार हो सकता है, या यह सीमा से बाहर हो सकता है। एक नई पंक्ति डालने पर एक मान गुम होता है जिसमें गैर-नूल कॉलम के लिए कोई मान नहीं होता है जिसमें इसकी परिभाषा में कोई स्पष्ट DEFAULT क्लॉज नहीं होता है। (एक पूर्ण कॉलम के लिए, यदि मूल्य गुम है तो NULL डाला जाता है।) सख्त मोड भी तालिका बनाने जैसे डीडीएल स्टेटमेंट को प्रभावित करता है। https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict – Chintan7027

0

दूरी क्षेत्र पर खंड द्वारा समूह का उपयोग करने का प्रयास करें।

POI::select('*', DB::raw("SQRT(POW((x - {$this->x}),2) + POW((y - {$this->y}),2)) AS distance")) 
    ->where('status', Config::get('app.poi_state.enabled')) 
    ->whereNotIn('id', $excludePOIList) 
    ->groupBy('distance') 
    ->having('distance', '<=', $distance) 
    ->orderBy('distance')->get(); 
0

मुझे नहीं पता कि आपको अपग्रेड के बाद यह त्रुटि क्यों मिलती है लेकिन पहले नहीं। config में

->where(DB::raw("SQRT(POW((x - {$this->x}),2) + POW((y - {$this->y}),2)) "), '<=', $distance) 
संबंधित मुद्दे