मैं एक प्रोग्राम लिख रहा हूं जो नया डेटा प्राप्त होने पर हर कुछ सेकंड में MySQL टेबल अपडेट करता है। फ़ंक्शन में लगातार अपडेट करने के लिए एक अनंत लूप होता है, इसके अंदर एक और लूप होता है जो टेबल पंक्तियों के माध्यम से पुनरावृत्त होता है और तदनुसार डेटा चुनता है।

दुर्भाग्य से, कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, मुझे सबसे दयनीय त्रुटि का सामना करना पड़ता है:

max_prepared_stmt_count से अधिक विवरण नहीं बना सकते

मैंने बयानों के साथ प्रत्येक पुनरावृत्ति के बाद सभी MySQL संबंधित मूल्यों (कॉन और ड्राइवर को छोड़कर) को हटाने की कोशिश की है यहां उदाहरण कोड में देखा गया

मैंने जोड़ने की कोशिश की है

 stmt = NULL;
 stmt->close(); 

बस हर मूल्य से पहले मामले में।

मैंने auto_ptr, जो इस उत्तर के आधार पर कथित रूप से अपने आप साफ हो जाता है।

मैंने प्रत्येक पुनरावृत्ति के बाद MySQL सर्वर से कनेक्शन को बंद करने और पुन: स्थापित करने का भी प्रयास किया है, लेकिन इससे भी मेरी मदद नहीं हुई।

कृपया मदद करे।

-1
Roxerg 3 पद 2017, 05:42

1 उत्तर

सबसे बढ़िया उत्तर

आपके लूप पर अधिक जानकारी की आवश्यकता हो सकती है।

लेकिन ऐसा लगता है कि आपका stmt = con->createStatement(); आपके लूप के अंदर है। आपका लूप शुरू होने से पहले आपको केवल एक कनेक्शन की आवश्यकता है।

फिर आप अपने लूप में एक स्टेटमेंट को कई बार निष्पादित कर सकते हैं, res = stmt->executeQuery("SELECT 'Hello World!' AS _message");

जब आपका आवेदन समाप्त हो जाता है तो आप अपना stmt, delete stmt; बंद कर देते हैं

Mysql.com से "डिफ़ॉल्ट मान 16,382 है।" mysql.com-sysvar_max_prepared_stmt_count कौन सा ऐसा लगता है कि आपको केवल एक की आवश्यकता है।

1
Bradmage 3 पद 2017, 05:53