MySQL त्रुटि 1153 - 'max_allowed_packet' बाइट्स से बड़ा पैकेट मिला


430

मैं एक MySQL डंप आयात कर रहा हूं और निम्नलिखित त्रुटि प्राप्त कर रहा हूं।

$ mysql foo < foo.sql 
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

जाहिरा तौर पर डेटाबेस में संलग्नक होते हैं, जो बहुत बड़े आवेषण के लिए बनाता है।


यह मेरी स्थानीय मशीन पर है, एक मैक जो MySQL 5 के साथ MySQL पैकेज से स्थापित है।

मैं max_allowed_packetडंप आयात करने में सक्षम होने के लिए कहां बदलूं ?

क्या कुछ और है जो मुझे सेट करना चाहिए?

बस दौड़ने mysql --max_allowed_packet=32M …से वही त्रुटि हुई।



@Muleskinner, यह सवाल आपके द्वारा उल्लेखित होने से 3 साल पहले पोस्ट किया गया था और मैं आपकी टिप्पणी के 4 साल बाद यह बता रहा हूं। : p
tiomno

2
Webyog.com लिंक टूट गया है: 404
पत्रोस

यहां , एक समान त्रुटि, "क्वेरी के लिए पैकेट बड़ी (5526600> 1048576) है।", गलत पासवर्ड प्रविष्टि के कारण होता था, जब जेटक्राइन्स द्वारा डेटाग्रिप 2016.1 का उपयोग करके MySQL डेटाबेस से कनेक्ट किया गया था, और इसे सही पासवर्ड का उपयोग करके सुधारा गया माईएसक्यूएल डाटाबेस यूजर के अनुरूप)।
nyedidikeke

जवाबों:


589

आपको शायद इसे दोनों क्लाइंट के लिए बदलना होगा (आप आयात करने के लिए दौड़ रहे हैं) और डेमॉन myqqld जो चल रहा है और आयात को स्वीकार कर रहा है।

क्लाइंट के लिए, आप इसे कमांड लाइन पर निर्दिष्ट कर सकते हैं:

mysql --max_allowed_packet=100M -u root -p database < dump.sql

इसके अलावा, mysnld अनुभाग के तहत my.cnf या my.ini फ़ाइल को बदलें और सेट करें:

max_allowed_packet=100M

या आप इन कमांड को उसी सर्वर से जुड़े MySQL कंसोल में चला सकते हैं :

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

(पैकेट के आकार के लिए एक बहुत बड़े मूल्य का उपयोग करें।)


मेरे पास 16 जीबी रैम वाला सर्वर है, क्या यह max_allowed_packet100 एमबी पर सेट करने के लिए एक बुरा विचार है ?
वेबनेट

11
FYI करें - इससे मुझे एक
DIFFERENT

37
ज्ञात हो कि "सेट ग्लोबल" का उपयोग अगली mysql सेवा के पुनरारंभ होने तक काम करता है।
विल शेवर

2
छोड़ें "वैश्विक सेट करें" और अंतिम ";" इन मूल्यों को my.ini या my.cnf फाइलों में जोड़ते समय। Ex: my.conf में "net_buffer_length = 1000000"।
रुस्तवोर २14

3
CentOS 5 पर, my.cnf /etc/my.cnf पर स्थित है
रुस्तवोर

124

जैसा कि michaelpryor ने कहा, आपको इसे क्लाइंट और डेमन mysqld सर्वर दोनों के लिए बदलना होगा ।

क्लाइंट कमांड-लाइन के लिए उसका समाधान अच्छा है, लेकिन इनआई फाइलें हमेशा कॉन्फ़िगरेशन के आधार पर चाल नहीं करती हैं।

तो, एक टर्मिनल खोलें, mysql mysql प्रॉम्प्ट प्राप्त करने के लिए टाइप करें, और ये कमांड जारी करें:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000; 

Mysql प्रॉम्प्ट को खुला रखें, और अपनी कमांड-लाइन SQL निष्पादन को दूसरे टर्मिनल पर चलाएं।


2
मेरे लिए समस्या का हल; जो आयात मैं कर रहा हूं वह एक बार बंद है, और मैं आसानी से कॉन्फ़िगरेशन को नहीं बदल सकता। इसने बहुत अच्छा काम किया। : डी
रोब हॉवर्ड

39

इसे आपकी my.iniफ़ाइल में बदला जा सकता है , उदाहरण के लिए, सर्वर के अंतर्गत, (प्रोग्राम पर, \ Program Files \ MySQL सर्वर में स्थित विंडोज पर) उदाहरण के लिए:

[mysqld]

max_allowed_packet = 10M

5
एक मैक पर, फ़ाइल स्पष्ट रूप से कहीं और स्थित है।
kch

2
यकीन है, लेकिन विन्यास अभी भी कहीं न कहीं है, हालांकि मुझे सटीक स्थान नहीं पता है
GHAD

मेरे लिए फेडोरा 20 में मारियाडीबी के साथ, उस सेटिंग को /etc/my.cnf.d/server.cnf के अंत में ट्रिक में रखा। मुझे निश्चित रूप से सेवा को फिर से शुरू करना था ... sudo nano systemctl पुनरारंभ mariadb.service
रे फॉस

फ़ाइल आमतौर पर "my.cnf" और nix सिस्टम पर, आमतौर पर / etc / या / usr / स्थानीय / आदि में होगी। एक बार जब आप संपादित करते हैं, तो परिवर्तन लागू करने के लिए mysql सर्वर को पुनरारंभ करना सुनिश्चित करें।
क्रिस

17

Mysql.com dmg पैकेज वितरण से MySQL का उपयोग करते समय Mac OS X पर my.cnf को पुनः चलाएँ

डिफ़ॉल्ट रूप से, my.cnf कहीं नहीं पाया जाएगा।

आपको इनमें से एक को फिर /usr/local/mysql/support-files/my*.cnfसे शुरू /etc/my.cnfऔर कॉपी करना होगा mysqld। (यदि आप इसे स्थापित करते हैं तो आप MySQL वरीयता फलक में कर सकते हैं।)


OSX के लिए डिफ़ॉल्ट कॉन्फिगरेशन my-medium.cnf प्रतीत होता है, हालाँकि max_allowed_packet का आकार my-big.cnf में समान है ... जब तक आप चीजें बदलना शुरू नहीं करते हैं :)
क्रिस बर्गस

मेरे मामले में /usrl/local/mysql/my.cnf तब तक काम नहीं किया जब तक मैं इसे /etc/my.cnf पर कॉपी नहीं करता।
वीजी

14

Etc / my.cnf में max_allowed _packet और net_buffer_length को बदलने का प्रयास करें

max_allowed_packet=100000000
net_buffer_length=1000000 

अगर यह काम नहीं कर रहा है तो बदलने की कोशिश करें

max_allowed_packet=100M
net_buffer_length=100K 

12

फिक्स MySQL डेमॉन के max_allowed_packet को बढ़ाना है। आप इसे सुपर के रूप में लॉग इन करके और निम्न कमांड चलाकर रनिंग डेमॉन के लिए कर सकते हैं।

# mysql -u admin -p

mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)

फिर अपने डंप को आयात करने के लिए:

gunzip < dump.sql.gz | mysql -u admin -p database

MySQL के किस संस्करण पर आप इसे चला रहे थे?
crampicco


4

max_allowed_packetजैसे आदेश जारी करने वाले चर का उपयोग करें

mysql --max_allowed_packet=32M -u root -p database < dump.sql


2
कोशिश की, काम नहीं किया। 272mb में पूरे डंप, की तुलना में अधिकतम के साथ की कोशिश की।
kch

4

आपकी समस्या के लिए थोड़ा असंबंधित है, इसलिए यहां Google के लिए एक है।

यदि आपने SQL को mysqldump नहीं किया है, तो हो सकता है कि आपकी SQL टूट गई हो।

मुझे अपने कोड में गलती से एक स्ट्रिंग स्ट्रिंग शाब्दिक होने से यह त्रुटि मिली। टेढ़ी ऊँगली होती है।

यह एक भयावह त्रुटि के लिए एक शानदार त्रुटि संदेश है, उस MySQL के लिए धन्यवाद!


1
टूटी एसक्यूएल के कारण मुझे भी यह त्रुटि मिली। अधिक विशेष रूप से, मेरी तालिका में अशक्त बाधाएं हैं और मेरा कोड शून्य मानों को सम्मिलित कर रहा था। मुझे एक सूचनात्मक त्रुटि देने के बजाय, MySQL ने max_allowed_packetत्रुटि वापस कर दी । अगर यह भविष्य में उन लोगों के लिए मदद करता है, तो मैं पांडा एपीआई का उपयोग कर रहा थाdf.to_sql(...)
एलेक्स पेट्रालिया

1

कभी-कभी सेटिंग टाइप करें:

max_allowed_packet = 16M

in my.ini काम नहीं कर रहा है।

इस प्रकार my.ini निर्धारित करने का प्रयास करें:

set-variable = max_allowed_packet = 32M

या

set-variable = max_allowed_packet = 1000000000

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

/etc/init.d/mysql restart

1

यह max_allowed_packetउच्च मूल्य पर एक सुरक्षा जोखिम है , क्योंकि एक हमलावर बड़े आकार के पैकेट को धक्का दे सकता है और सिस्टम को क्रैश कर सकता है।

तो, इष्टतम मान max_allowed_packetको ट्यून और परीक्षण किया जाना है।

आवश्यकता होने पर (इसका उपयोग करके set global max_allowed_packet = xxx) इसे my.ini या my.conf के हिस्से के रूप में बदलना बेहतर है


0

मैं एक साझा होस्टिंग वातावरण में काम कर रहा हूं और मैंने ड्रुपल पर आधारित एक वेबसाइट की मेजबानी की है। मैं my.iniफ़ाइल या my.confफ़ाइल को भी संपादित नहीं कर सकता ।

इसलिए, मैंने उन सभी तालिकाओं को हटा दिया जो संबंधित थीं Cacheऔर इसलिए मैं इस मुद्दे को हल कर सकता था। फिर भी मैं इस समस्या से निपटने के लिए एक सही समाधान / तरीका ढूंढ रहा हूं।

संपादित करें - मेरे लिए समस्याएँ पैदा करने वाली तालिकाएँ हटाना, coz Drupal उम्मीद कर रहा था कि इन तालिकाओं को विद्यमान होना चाहिए। इसलिए मैंने इन तालिकाओं की सामग्री को खाली कर दिया जिससे समस्या हल हो गई।


0

त्रुटि:

ERROR 1153 (08S01) 6772 लाइन पर: 'max_allowed_packet' बाइट्स की तुलना में बड़ा पैकेट प्राप्त हुआ, एक्जिटकोड के साथ ऑपरेशन विफल

: QUERY

SET GLOBAL max_allowed_packet=1073741824;
SHOW VARIABLES LIKE 'max_allowed_packet'; 

अधिकतम मूल्य:

Default Value (MySQL >= 8.0.3)  67108864
Default Value (MySQL <= 8.0.2)  4194304
Minimum Value   1024
Maximum Value   1073741824

-1

जब आप इसे mysqldump के साथ डंप करते हैं तो अधिकतम (या अधिक) के लिए max_allowed_packet सेट करें। यदि आप ऐसा नहीं कर सकते, तो एक छोटे से मूल्य के साथ फिर से डंप बनाएं।

यह मानते हुए, आपने इसे mysqldump के साथ डंप किया। यदि आप किसी अन्य उपकरण का उपयोग करते हैं, तो आप अपने दम पर हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.