2011-06-02 14 views
6

मैं एक ड्रोपल साइट चला रहा हूं। मुझे अपनी साइट उपयोगकर्ता चेतावनी में एक त्रुटि मिली: 'max_allowed_packet' बाइट क्वेरी से बड़ा पैकेट मिला। मैंने मान को 128 एम के रूप में उच्च निर्धारित किया है। उसी त्रुटि के बाद भी रिपोर्ट की गई है।क्या max_allowed_packet मान के लिए अधिकतम सीमा है?

यहां समस्या क्या है ?? यह क्यों काम नहीं कर रहा है ??

क्या max_allowed_packet मान के लिए अधिकतम सीमा है?

+1

संभावित साझा कारण: http://stackoverflow.com/questions/93128/mysql-got-a-packet-bigger-than-max-allowed-packet-bytes –

+1

क्या आप 100% सुनिश्चित हैं कि आपने max_allowed_packet को सेट किया है 128 मेग्स? आम तौर पर, यदि कोई प्रोग्राम किसी चीज़ के बारे में शिकायत नहीं करता है - यह आमतौर पर उपयोगकर्ता को किसी भी तरह खराब कर देता है। आपने max_allowed_packts को कैसे सेट किया? –

+1

ऐसा लगता है कि परिवर्तन परिलक्षित नहीं हो रहा है। मैंने max_allowed_packet = 128M /etc/my.cnf फ़ाइल में जोड़ा है। लेकिन जब मैं आदेश चला _ " 'max_allowed_packet%' जैसे शो चर," _ उत्पादन प्राप्त किया जाता है के रूप में _max_allowed_packet 1048576_ मैं _mysql> सेट max_allowed_packet mysql सांत्वना से यह स्थापित करने का प्रयास = 134,216,704; _ लेकिन जब मैं इसे पुनरारंभ करता हूं और इसे फिर से जांचता हूं तो सेट वैरिएबल 1048576 पर वापस आता है। मैं max_allowed_packet को स्थायी रूप से कैसे सेट करूं ?? –

उत्तर

3

अक्सर इस चर नहीं वास्तव में लेने के प्रभाव आप विन्यास परिवर्तन करने की वजह से हो सकता है, लेकिन गलत my.cnf में या एप्लिकेशन बाउंस करने के लिए भूल जाते हैं, आदि

जाँच करने के लिए एक आसान तरीका है -p

mysqladmin चर -u जड़ और अपने रूट पासवर्ड में दर्ज करें: एक चल mysql उदाहरण एक खोल में कुछ इस तरह करना है। यह सभी मौजूदा चर (max_allowed_packet सहित) को डंप करेगा, और आपको यह सत्यापित करने देगा कि यह क्या सेट है। यदि यह 128 एम पर सेट है और आप अभी भी इस पर चिल्ला रहे हैं, तो आपको इसे बढ़ाने की आवश्यकता होगी- लेकिन यह बहुत ही असंभव है।

+0

जो परिवर्तन मैं /etc/my.cnf में करता हूं वह प्रतिबिंबित नहीं हो रहा है। जब मैं _mysqladmin चर चलाता हूं-u root -p_ max_allowed_packet 1048576 के रूप में प्राप्त किया जाता है। MySQL कंसोल से किए गए परिवर्तन प्रभावी होते जा रहे हैं। लेकिन max_allowed_packet 1048576 पर वापस जाता है जब MySQL को पुनरारंभ किया जाता है –

+0

हमें एक ही समस्या का सामना करना पड़ रहा है, आपको कोई समाधान मिला है – Mohsin

1

संपादित करें, max_allowed_packet चर जोड़ें।

यह इस तरह दिखना चाहिए:

[mysqld] 
max_allowed_packet=1000000000 

फिर अपने सर्वर को पुनरारंभ करें।

5

यह खून बह रहा है: वैश्विक max_allowed_packet = 1073741824 सेट करें;

हालांकि, शायद यह आपके मामले में उच्च स्थापित करने का अच्छा विचार नहीं है।

एक साइड नोट के रूप में, मैंने mysqldump के साथ इस त्रुटि का अनुभव किया, और इस अधिकतम सेटिंग को मदद नहीं मिली। $ Mysqldump --max_allowed_packet = 999M -u जड़ -p TABLE_NAME> table_name.sql

1

पहले आप अपने my.cnf फ़ाइल में 128M करने के लिए अपने max_allowed_packet निर्धारित करने की आवश्यकता है: यह चाल किया था।

इसे खोजने के लिए, अपनी कमांड लाइन में "my.cnf का पता लगाएं" कमांड का उपयोग करें।

फ़ाइल इस तरह दिखना चाहिए:

# 
!includedir /etc/my.cnf.d 
#max_allowed_packet = 1024M 
[mysqld] 
port   = 3306 
      key_buffer_size = 256M 
#   max_allowed_packet = 100M 
      table_open_cache = 256 
      sort_buffer_size = 1M 
      read_buffer_size = 1M 
      read_rnd_buffer_size = 4M 
      myisam_sort_buffer_size = 64M 
      thread_cache_size = 8 
      query_cache_size= 16M 
      thread_concurrency = 8 
      bind-address = 202.90.158.47 
      # skip-networking 
log = /var/log/mysql.access.log 
log-error = /var/log/mysql.error.log 
wait_timeout = 1 

[mysqldump] 
#max_allowed_packet  = 101M 

uncomment करने के लिए (max_allowed_packet = 128M लाइन से पहले # संकेत निकालने के लिए)

और अंत में, आदेश का उपयोग कर अपने एसक्यूएल को पुनः आरंभ सुनिश्चित हो "/ etc/init.d/mysqld पुनरारंभ करें "

जो चाल चलाना चाहिए। : डी

0

my.cnf की [mysqld] श्रेणी के अंतर्गत आखिरी विकल्प के रूप में max_allowed_packet = 128M सेट करके देखें।

जब मेरे पास यह पहला विकल्प था, तो यह काम नहीं करेगा, लेकिन जब मैंने इसे अंतिम विकल्प के रूप में किया था, तो यह काम करता था! मुझे लगता है कि ऐसा इसलिए है क्योंकि कुछ अन्य चर max_allowed_packet से अधिक सवारी कर रहे थे।

my.cnf बदलने के बाद, MySQL में sudo service mysql restart का उपयोग कर पुनरारंभ करें, और सेटिंग का उपयोग कर SHOW VARIABLES LIKE 'max_allowed_packet';

0

आप सभी वर्गों कि कार्रवाई आप कर रहे हैं के लिए लागू में सेटिंग निर्धारित करने की आवश्यकता की जाँच, और हमेशा [ MySQLd] खंड। सेटिंग आपके द्वारा उपयोग किए जा रहे तत्वों के बफर पर लागू होती है। तो [MySQLd] के तहत आपके MySQL सर्वर के लिए विंडोज़ पर लिनक्स/सेवा पर deamon proces है। और यदि आप MySQLDump के साथ डंप बनाना चाहते हैं तो इसे कमांड लाइन पर पैरामीटर के रूप में जोड़ें या अपने my.ini में एक अनुभाग [MySQLDump] बनाएं और साथ ही साथ इस टूल के लिए इसे स्थायी बनाने के लिए उसी पैरामीटर के साथ करें। यदि आप फिर से MySQL के साथ डंप आयात करना चाहते हैं तो कमांड लाइन पर पैरामीटर का उपयोग करें या इस टूल के लिए विकल्प स्थायी बनाने के लिए अपने my.ini में एक ही पैरामीटर के साथ एक सेक्शन [MySQL] बनाएं।

मैं my.ini के बारे में बात करता रहा क्योंकि मैं खिड़कियों पर हूं लेकिन लिनक्स पर हूं जो मेरा.cnf है।

मैंने इसे यहां समझाए जाने का फैसला किया क्योंकि मुझे इसे समझने में उम्र लग गई क्योंकि इसे कहीं भी समझाया नहीं गया है। उदाहरणों में हालांकि मैंने कुछ पीपीएल को कई वर्गों के तहत सेटिंग रखने पर ध्यान दिया, इसलिए मैंने अधिक से अधिक Google को शुरू किया और अनुभागों और उनके द्वारा किए जाने वाले कार्यों के बीच सहसंबंध पाया। अब मुझे अब यह समस्या कभी नहीं मिली है और अधिकांश मामलों में उल्लिखित 128 एम के रूप में उच्च सेटिंग्स की आवश्यकता नहीं है। हालांकि, क्योंकि यह अधिकतम है कि सर्वर इस बफर के लिए उपयोग करेगा यदि आपके पास स्मृति है, तो इसे अपने कार्यों के साथ कभी भी परेशानी न होने के लिए पर्याप्त उच्च सेट करें। जिस आकार को आप वास्तव में चाहते हैं वह आपके डेटाबेस में सबसे बड़े रिकॉर्ड से थोड़ा बड़ा है।

संबंधित मुद्दे