"MySQL सर्वर दूर चला गया है" जब एक बड़ी डंप फ़ाइल आयात करने का प्रयास किया गया


11

मैं एक MySQL डंप फ़ाइल आयात करने की कोशिश कर रहा हूँ।

फ़ाइल लिनक्स सर्वर पर बनाई गई थी, मैं विंडोज़ पर आयात करने की कोशिश कर रहा हूं

मैंने कमांड लाइन में लॉग इन किया और भाग गया:

SOURCE c:/dump.sql

लेकिन ऐसा लगता है कि कुछ चरित्र सेट की समस्याओं (विशेष रूप से स्मार्ट कोट्स और अन्य गैर मानक विराम चिह्नों के साथ) को फेंक दिया गया है।

यह मुझे सुझाव दिया गया था कि मैं चलाऊं:

mysql -u username -d dbase < c:\dump.sql

जब मैं यह कोशिश करता हूं तो मुझे त्रुटि मिलती है

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

गुग्लिंग के एक बिट ने सुझाव दिया कि यह अधिकतम_अच्छे_पैपेट स्विच के साथ करना था लेकिन मैंने यह कोशिश की है और यह काम नहीं किया है। किसी को भी किसी भी विचार यह क्या हो सकता है?

अगर किसी के पास कैरेक्टर सेट इश्यू के बारे में कोई सुझाव है जो मददगार भी होगा।


कोई प्रतिपादन? [टिप्पणी करने के लिए आवश्यक 15 वर्ण]
मिहाई लिम्बासन

जवाबों:


23

प्रश्न शीर्षक में त्रुटि संदेश पढ़ने के बाद मेरी पहली वृत्ति अधिक से अधिक बढ़ने की सलाह देने के लिए थी। आपने उल्लेख किया है कि आपने इसे "स्विच" करने की कोशिश की है और यह काम नहीं किया है। क्या आप पुष्टि कर सकते हैं कि आपने सर्वर की कॉन्फ़िगरेशन फ़ाइल को सही ढंग से संशोधित किया है? आपका काम करने का तरीका ऐसा लगता है कि आपने mysql.exe क्लाइंट कमांड लाइन पर कमांड लाइन स्विच के रूप में उपयोग करने की कोशिश की है, जिससे सर्वर व्यवहार में बदलाव नहीं करेगा।

तो, संक्षेप में, आपको जो करने की कोशिश करनी चाहिए, वह है। अपने सर्वर का वर्तमान में उपयोग कर रहे my.cnf फ़ाइल को खोजें और संपादित करें। में [mysqld]खंड की तरह कुछ करने के लिए max_allowed_packet सेटिंग को बदल

[mysqld]
max_allowed_packet=32M

कॉन्फ़िगरेशन को बदलने के बाद सर्वर को पुनरारंभ करना न भूलें।

मैंने एक उदाहरण के रूप में 32M (एक उपहास का बड़ा मूल्य) का उपयोग किया है। चूँकि आपकी क्वेरी निरर्थक प्रतीत होती है, इसलिए आपको यह मानने की कोशिश करनी चाहिए (या शायद 64M अगर आपके पास पर्याप्त RAM है) यह देखने के लिए कि क्या यह काम करता है।

एक अन्य विकल्प सर्वर को छोड़ना है और SQL डंप को उत्पन्न करने के लिए उपयोग किए जाने वाले क्लाइंट के व्यवहार में परिवर्तन करना है। इसे 1 एमबी से कम के व्यक्तिगत प्रश्नों के आकार को सीमित करने के लिए कहें - जो भी करना चाहिए।

अधिक जानकारी के लिए, B.1.2.10 देखें पैकेट MySQL मैनुअल में बहुत बड़ा है।


1
हां मैं सिर्फ कमांड लाइन स्विच की कोशिश कर रहा था। जब मुझे लगा कि इसका प्रभाव पड़ा है, तो यह है कि जब मैंने इसे कुछ छोटा करने के लिए सेट किया, तो इसे अधिकतम अनुमत पैकेट बहुत छोटी त्रुटि दी। मैं सोमवार को आपके सुझाव की कोशिश करूंगा। साभार
जेरेमी फ्रेंच '

आपका स्वागत है - मैं लगभग निश्चित हूं कि यह काम करेगा। दुर्भाग्य से, पिछले 50 या इतने वर्षों में लिखे गए कई (ठीक, सबसे अधिक) अन्य सॉफ़्टवेयर के साथ, MySQL के त्रुटि संदेश चूसना और भ्रामक होते हैं यदि आप पहले से ही उस तरह से परिचित नहीं हैं जिस तरह से डेवलपर का दिमाग काम करता है :)।
मिहाई लिम्बायसन

यह सुनकर खुशी हुई - मजा आया।
मिहाई लिम्बायसन

बहुत ही भयानक। मुझे भी यही समस्या थी, यहाँ आकर सवाल पूछा और बम! हल किया। @ मिहाई - जो भी आपको भुगतान मिले; यह पर्याप्त नहीं है :)
स्टीवन एवर्स

इस समाधान ने हमारी मदद की, जब हमें हमारी MySQL को लोकलहोस्ट से रिमोट सर्वर पर ले जाने के बाद यह त्रुटि मिली। आपका बहुत बहुत धन्यवाद!
ली कोहेन

1

MySQL 5.7.24 पर, यह MySQL 5.6 से पुराने कॉन्फ़िगरेशन के कारण था

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

यदि SQL संस्करण 5.7.5 या इससे अधिक है, तो नीचे विकल्प अनिवार्य है।

sql_mode=TRADITIONAL

इसके अलावा /etc/my.cnf में दो max_allowed_packet पैरामीटर हैं , अन्य एक mysqldump के लिए है। कृपया ध्यान दें।

max_allowed_packet = <1G>

मेरी स्थापना CentOS7 पर है।


0

क्या आप लिनक्स बॉक्स से विंडोज़ सर्वर पर MySQL के उदाहरण का उपयोग करने में सक्षम हैं?

यदि ऐसा है, तो क्या आप विंडोज बॉक्स पर सर्वर से कनेक्ट करने के लिए -h स्विच के साथ, लिनक्स बॉक्स पर कमांड चला सकते हैं ?

mysql -u username -d dbase -h <windows host> < dump.sql

यह आपके चरित्र सेट की समस्याओं को हल कर सकता है , क्योंकि आप आयात करने के लिए मूल बॉक्स पर लिनक्स क्लाइंट का उपयोग कर रहे हैं। (केवल अनुमान है)


0

MySQL लॉग क्या कहता है?

कभी-कभी यह त्रुटि क्लाइंट पर रिपोर्ट की जाती है यदि सर्वर पर कोई अचूक त्रुटि होती है। यह डेटाबेस टेबल के डिस्क भ्रष्टाचार का एक संकेतक हो सकता है।


-1

क्या आपके खाते में पासवर्ड है? शायद आपको -p स्विच जोड़ने की आवश्यकता है:

mysql -u username -p -d dbase < c:\dump.sql

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