क्या यह मान सेट की संख्या पर निर्भर करता है? क्या यह INSERT बयान में बाइट्स की संख्या पर निर्भर करता है?
जवाबों:
आप INSERT ... SELECT
पैटर्न का उपयोग करके असीम रूप से बड़ी संख्या में रिकॉर्ड सम्मिलित कर सकते हैं , बशर्ते आपके पास अन्य तालिकाओं में वे रिकॉर्ड या भाग हों।
लेकिन यदि आप INSERT ... VALUES
पैटर्न का उपयोग करके मूल्यों को हार्ड-कोडिंग कर रहे हैं , तो इस बात की सीमा है कि आपका कथन कितना बड़ा / लंबा है: max_allowed_packet जो क्लाइंट द्वारा डेटाबेस सर्वर पर भेजे गए SQL कथनों की लंबाई को सीमित करता है, और यह किसी भी प्रकार के प्रश्नों को प्रभावित करता है और न केवल INSERT बयान के लिए।
आदर्श रूप से, मैसकल सिंगल इन्सर्ट (एक ही बार में) में अनंत पंक्तियों के निर्माण की अनुमति देता है लेकिन जब ए
MySQL क्लाइंट या mysqld सर्वर एक पैकेट को max_allowed_packet बाइट्स से बड़ा प्राप्त करता है, यह एक पैकेट बहुत बड़ी त्रुटि जारी करता है और कनेक्शन बंद कर देता है।
यह देखने के लिए कि अधिकतम मान के लिए डिफ़ॉल्ट मान क्या है_अधिकांश_पैकेट चर, MySQL में निम्न कमांड निष्पादित करें:
show variables like 'max_allowed_packet';
मानक MySQL अधिष्ठापन का डिफ़ॉल्ट मान 1048576 बाइट्स (1MB) है। इसे सत्र या कनेक्शन के लिए उच्च मान पर सेट करके बढ़ाया जा सकता है।
यह मान सभी के लिए 500MB पर सेट करता है (कि GLOBAL का मतलब क्या है):
SET GLOBAL max_allowed_packet=524288000;
नए कनेक्शन के साथ नए टर्मिनल में अपने परिवर्तन की जाँच करें:
show variables like 'max_allowed_packet';
अब यह अनंत रिकॉर्ड डालने के लिए किसी भी त्रुटि के बिना काम करना चाहिए। धन्यवाद
strlen($query_with_questionmarks) < $max_alloweed_packet
?
max_allowed_packet
सामान्य रूप से क्वेरी सीमित है ।
का उल्लेख http://forums.mysql.com/read.php?20,161869 , यह आपके mysql के विन्यास के साथ संबंधित है: max_allowed_packet
, bulk_insert_buffer_size
, key_buffer_size
।
आप एक INSERT विवरण के साथ अनंत संख्या में पंक्तियाँ सम्मिलित कर सकते हैं। उदाहरण के लिए, आप एक संग्रहीत प्रक्रिया निष्पादित कर सकते हैं जिसमें एक लूप हजार बार निष्पादित होता है, प्रत्येक बार INSERT क्वेरी को चलाता है।
या आपका INSERT एक ट्रिगर यात्रा कर सकता है जो खुद एक INSERT करता है। जो एक और ट्रिगर यात्रा करता है। और इसी तरह।
नहीं, यह मूल्य सेट की संख्या पर निर्भर नहीं करता है। न ही यह बाइट्स की संख्या पर निर्भर करता है।
आपके कोष्ठकों को कितनी गहराई से नेस्ट किया जा सकता है, और आपके कुल स्टेटमेंट की अवधि कितनी है, इसकी एक सीमा है। ये दोनों संदर्भित हैं, विडंबना यह है कि thedailywtf.com पर। हालाँकि, मेरे द्वारा बताए गए दोनों साधन इन सीमाओं के आसपास हैं।
आप max_allowed_packet सीमा और हिट करेंगे
त्रुटि: 1390 तैयार बयान में बहुत सारे प्लेसहोल्डर हैं।
आप एक sql में 65535 प्लेसहोल्डर रख सकते हैं। यदि आपके पास एक पंक्ति में दो कॉलम हैं, तो आप एक sql में 32767 पंक्तियाँ डाल सकते हैं।