सामान्य रूप से त्रुटि:
त्रुटि: 2006 ( CR_SERVER_GONE_ERROR
) - MySQL सर्वर चला गया है
इसका मतलब है कि क्लाइंट सर्वर पर सवाल नहीं भेज सकता है ।
mysql
आयात
आपके विशिष्ट मामले में डेटाबेस फ़ाइल को आयात करते समय mysql
, इसका सबसे अधिक अर्थ है कि SQL फ़ाइल में कुछ क्वेरीज़ आयात करने के लिए बहुत बड़ी हैं और उन्हें सर्वर पर निष्पादित नहीं किया जा सकता है, इसलिए क्लाइंट पहले हुई त्रुटि पर विफल हो जाता है।
तो आप निम्नलिखित संभावनाएं हैं:
बाकी प्रश्नों को आगे बढ़ाने और निष्पादित करने के -f
लिए बल विकल्प ( ) जोड़ें mysql
।
यह उपयोगी है यदि डेटाबेस में कैश से संबंधित कुछ बड़े प्रश्न हैं जो वैसे भी प्रासंगिक नहीं हैं।
बढ़ाएँ max_allowed_packet
औरwait_timeout
अपने सर्वर कॉन्फ़िगरेशन (जैसे ~/.my.cnf
) में।
--skip-extended-insert
बड़े प्रश्नों को तोड़ने के लिए विकल्प का उपयोग कर डेटाबेस को डंप करें । फिर इसे आयात करें।
के --max-allowed-packet
लिए आवेदन करने का प्रयास करें mysql
।
सामान्य कारण
सामान्य तौर पर यह त्रुटि कई चीजों का मतलब हो सकती है, जैसे:
सर्वर के लिए एक प्रश्न गलत है या बहुत बड़ा है,
समाधान: चर बढ़ाएंmax_allowed_packet
।
सुनिश्चित करें कि चर [mysqld]
अनुभाग के तहत है , नहीं [mysql]
।
परीक्षण (जैसे 1G
) के लिए बड़ी संख्या का उपयोग करने से डरो मत ।
MySQL / MariaDB सर्वर को पुनरारंभ करने के लिए मत भूलना।
डबल चेक मान को ठीक से सेट किया गया था:
mysql -sve "SELECT @@max_allowed_packet" # or:
mysql -sve "SHOW VARIABLES LIKE 'max_allowed_packet'"
आपको क्लाइंट साइड पर टीसीपी / आईपी कनेक्शन से एक टाइमआउट मिला।
समाधान: चर बढ़ाएंwait_timeout
।
सर्वर से कनेक्शन बंद होने के बाद आपने एक क्वेरी चलाने की कोशिश की।
समाधान: आवेदन में एक तर्क त्रुटि को ठीक किया जाना चाहिए।
होस्ट नाम लुकअप विफल (उदाहरण के लिए DNS सर्वर समस्या), या सर्वर --skip-networking
विकल्प के साथ शुरू किया गया है ।
एक और संभावना यह है कि आपका फ़ायरवॉल MySQL पोर्ट (उदाहरण के लिए 3306 डिफ़ॉल्ट रूप से) को ब्लॉक करता है।
चल धागा मारा गया है, इसलिए फिर से प्रयास करें।
आपने एक बग का सामना किया है जहां क्वेरी निष्पादित करते समय सर्वर की मृत्यु हो गई।
एक अलग होस्ट पर चलने वाले क्लाइंट के पास कनेक्ट करने के लिए आवश्यक विशेषाधिकार नहीं हैं।
और बहुत सारे, इसलिए अधिक जानें: B.5.2.9 MySQL सर्वर चला गया है ।
डिबगिंग
यहां कुछ विशेषज्ञ-स्तरीय डिबग विचार दिए गए हैं:
लॉग की जाँच करें, जैसे
sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")
अपने कनेक्शन का परीक्षण mysql
, telnet
या पिंग फ़ंक्शंस (जैसे mysql_ping
PHP में) करें।
tcpdump
MySQL संचार को सूँघने के लिए उपयोग करें (सॉकेट कनेक्शन के लिए काम नहीं करेगा), जैसे:
sudo tcpdump -i lo0 -s 1500 -nl -w- port mysql | strings
लिनक्स पर, का उपयोग करें strace
। बीएसडी / मैक उपयोग dtrace
/ पर dtruss
, जैसे
sudo dtruss -a -fn mysqld 2>&1
देखें: MySQL को शुरू करने के साथ शुरू करना
MySQL सर्वर या क्लाइंट को डीबग करने का तरीका जानें: 26.5 डिबगिंग और पोर्टिंग MySQL ।
संदर्भ के लिए, क्लाइंट कमांड के लिए त्रुटि sql-common/client.c
फेंकने के लिए जिम्मेदार फ़ाइल में स्रोत कोड की जांच करें CR_SERVER_GONE_ERROR
।
MYSQL_TRACE(SEND_COMMAND, mysql, (command, header_length, arg_length, header, arg));
if (net_write_command(net,(uchar) command, header, header_length,
arg, arg_length))
{
set_mysql_error(mysql, CR_SERVER_GONE_ERROR, unknown_sqlstate);
goto end;
}