त्रुटि कोड: 2013. क्वेरी के दौरान MySQL सर्वर से कनेक्शन खो गया


252

मुझे त्रुटि कोड मिला : 2013. क्वेरी त्रुटि के दौरान MySQL सर्वर से कनेक्शन खो गया जब मैंने MySQL Mybench का उपयोग करके एक तालिका में एक सूचकांक जोड़ने की कोशिश की। मैंने यह भी देखा कि जब भी मैं लंबी क्वेरी चलाता हूं तो यह दिखाई देता है।

क्या टाइमआउट मान बढ़ाने के लिए दूर है?

जवाबों:


473

MySQL WorkBench के नए संस्करणों में विशिष्ट टाइमआउट को बदलने का विकल्प है।

मेरे लिए यह संपादन → वरीयताएँ → एसक्यूएल संपादक → डीबीएमएस कनेक्शन पढ़ा गया था समय (सेकंड में): 600

मान को 6000 में बदल दिया।

यह भी अनियंत्रित सीमा पंक्तियों के रूप में हर बार जब मैं पूरे डेटा सेट की खोज करना चाहता हूँ तो थकाऊ हो जाता है।


2
क्या यह सीमा 99,999 सेकंड से अधिक बढ़ाना संभव है? DBMS connection read time outक्षेत्र केवल 5 आंकड़े को स्वीकार, और 0 के लिए क्षेत्र की स्थापना डिफ़ॉल्ट पैरामीटर (600 सेकंड) के बराबर है। (विंडोज 7 64-बिट अल्टिमेट, माईएसक्यूएल वर्कबेंच 5.2.47 सीई)
फ्रेंक डर्नोनकोर्ट

2
बाद stackoverflow.com/q/16877574/395857 , इस मुद्दे को अब हल किया जाता है ( bugs.mysql.com/bug.php?id=69395 )
फ़्रैंक Dernoncourt

4
संपादित करें → वरीयताएँ → SQL क्वेरी
जॉन

7
पुनः आरंभ करने के बाद, यह एरर 2013 को फिर से दिखा रहा है, यहां तक ​​कि रीड टाइम आउट से 6000 तक सेट किया गया है, इसलिए यह एक समाधान प्रतीत नहीं होता है।
डेविस

4
कार्यक्षेत्र को पुनः आरंभ करने के लिए याद रखें और पहले सभी खुली क्वेरी विंडो को बंद करें!
pimbrouwers

32

Comandline विकल्प net_read_timeout/ wait_timeoutऔर उपयुक्त मान (सेकंड में) के साथ DB सर्वर शुरू करें - उदाहरण के लिए --net_read_timeout=100:।

संदर्भ के लिए यहां और यहां देखें ।


1
यह सही है, लेकिन अधिकांश संख्याओं के जवाब से मुझे वास्तव में मदद मिली
संबल त्रिपाठी

6
मैं कमांड लाइन में यह पैरामीटर कैसे प्रदान करूं? जब मैं DB से जुड़ने की कोशिश कर रहा हूं: mysql -u root -p --net_read_timeout = 60 या जब मैं सेवा शुरू करने की कोशिश कर रहा हूं? sudo सेवा mysql start? दोनों स्थानों पर यह त्रुटि दे रहा है: अज्ञात चर 'net_read_timeout'
विकास गोयल

@VikasGoel यह एक सर्वर साइड पैरामीटर है। Ie mysqld
क्लो

29

यदि आपकी क्वेरी में ब्लॉब डेटा है, तो इस उत्तर में प्रस्तावितmy.ini परिवर्तन को लागू करके इस समस्या को ठीक किया जा सकता है :

[mysqld]
max_allowed_packet=16M

डिफ़ॉल्ट रूप से, यह 1M होगा (अनुमत अधिकतम मान 1024M है)। यदि आपूर्ति किया गया मान 1024K का गुणक नहीं है, तो यह स्वचालित रूप से 1024K के निकटतम गुणक में चला जाएगा।

जबकि संदर्भित धागा MySQL त्रुटि 2006 के बारे में है , max_allowed_packet1M से 16M तक सेटिंग ने 2013 की त्रुटि को ठीक किया जो लंबी क्वेरी चलाते समय मेरे लिए दिखाई गई थी।

WAMP उपयोगकर्ताओं के लिए: आपको [wampmysqld]अनुभाग में ध्वज मिलेगा ।


यह वास्तव में मेरा मुद्दा था। मैं एक फ़ाइल से डेटाबेस बैकअप आयात कर रहा था और MySQL कार्यक्षेत्र इस 2013 की त्रुटि की रिपोर्ट कर रहा था, जिसके बाद "ऑपरेशन आउटकोड 1 के साथ विफल हुआ"। यह पता चलता है कि बैकअप में MySQL के डिफ़ॉल्ट max_allowed_packet 4M के आकार से अधिक बड़े स्तंभ थे। इसे बढ़ाकर इसे ठीक किया। (MySQL 5.6 और कार्यक्षेत्र 6.2.3)। धन्यवाद!
zAlbee

मेरे लिए भी यही तय था। हालाँकि मैंने इसे Windows मशीन के लिए 256M पर सेट किया है।
smoore4

16M था, उस त्रुटि को एक आयात फ़ाइल के साथ कई बार मिला, 32M में बदल गया और फिर उसने काम किया।
हक्रे

15

निम्नलिखित को / etc / mysql / cnf फ़ाइल में जोड़ें:

innodb_buffer_pool_size = 64M

उदाहरण:

key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
innodb_buffer_pool_size = 64M

6
क्या आप सुनिश्चित हैं कि फ़ाइल का नाम /etc/mysql/cnfसही है? यह नहीं होना चाहिए /etc/my.cnf?
पीटर वरगा

12
SET @@local.net_read_timeout=360;

चेतावनी: जब आप इसे दूरस्थ कनेक्शन में लागू कर रहे हैं तो निम्नलिखित काम नहीं करेगा:

SET @@global.net_read_timeout=360;

360 क्या है? मिलीसेकंड, सेकंड, मिनट?
मास्टरजे 2

10

इस त्रुटि संदेश के तीन संभावित कारण हैं

  1. आमतौर पर यह नेटवर्क कनेक्टिविटी की परेशानी को इंगित करता है और यदि यह त्रुटि अक्सर होती है तो आपको अपने नेटवर्क की स्थिति की जांच करनी चाहिए
  2. कभी-कभी "क्वेरी के दौरान" फ़ॉर्म तब होता है जब लाखों पंक्तियों को एक या अधिक प्रश्नों के भाग के रूप में भेजा जा रहा हो।
  3. अधिक शायद ही कभी, यह तब हो सकता है जब क्लाइंट सर्वर से प्रारंभिक कनेक्शन का प्रयास कर रहा है

अधिक विवरण के लिए पढ़ें >>

कारण 2:

SET GLOBAL interactive_timeout=60;

अपने डिफ़ॉल्ट के 30 सेकंड से 60 सेकंड या उससे अधिक समय तक

कारण 3:

SET GLOBAL connect_timeout=60;

2 मुझे यह त्रुटि देता है - कोड: 1227. प्रवेश निषेध; इस ऑपरेशन के लिए आपको कम से कम (कम से कम एक) सुपर विशेषाधिकार की आवश्यकता है
MasterJoe2

9

धन्यवाद! यह काम किया है। लेकिन mysqldb अपडेट के साथ कॉन्फ़िगर बन गया है:

max_allowed_packet

net_write_timeout

net_read_timeout

mysql doc


8

आपको mysql कॉन्फ़िग फ़ाइल में 'इंटरेक्टिव_टाइमआउट' और 'प्रतीक्षा_टाइम' गुण सेट करने चाहिए, जो आपके लिए आवश्यक हैं।


यह मेरी मदद करता है। my.cnf में 'इंटरेक्टिव_टाइमआउट' 100 पर सेट किया गया था, यह बहुत छोटा है। के बाद मैंने इसे बदलकर 3600 s (या आपके लिए कोई बड़ा मूल्य), समस्या हल कर दी।
Tx

7

बस एक MySQL अपग्रेड करें, जो MySQL के उचित कामकाज के लिए आवश्यक कई तालिकाओं के पुनर्निर्माण के साथ-साथ innoDB इंजन का निर्माण करेगा performance_schema, जैसे information_schema, आदि।

अपने शेल से निम्न आदेश जारी करें:

sudo mysql_upgrade -u root -p

MySQL कार्यक्षेत्र 6.1.4 (और थोड़ी देर बाद ही) तक त्रुटि स्वयं मौजूद नहीं थी और 6.1.6 पर भी होती है (हालांकि केवल कुछ उपयोगों के बाद) इसलिए मुझे यकीन नहीं है कि कैसे कई सर्वरों के पुनर्निर्माण के लिए एक तय है एक समस्या जिसने अभी हाल ही में केवल एक GUI पर खुद को प्रस्तुत किया है।
डेविस

इससे मेरा मुद्दा ठीक हो गया। मैंने सिर्फ एक मौजूदा एक पर डेटाबेस को सेटअप करने के लिए Ansible का उपयोग किया था, और चीजें हाइरवायर हो गईं। इस आदेश को चलाने से काम करने के क्रम में सब कुछ बहाल हो गया।
जुबज

4

मैं इसके पुराने लेकिन मैक पर जानता हूं

1. Control-click your connection and choose Connection Properties.
2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.

4

संपादित करें-> प्राथमिकताएं-> SQL संपादक-> MySQL सत्र में "रीड टाइम आउट" समय बदलें


3

कृपया संपादन → वरीयताएँ> SQL क्वेरी में सीमा पंक्तियों को अनचेक करने का प्रयास करें

क्योंकि आपको mysql config फाइल में 'इंटरेक्टिव_टाइमआउट' और 'प्रतीक्षा_टाइम' गुण सेट करने चाहिए।


3

यदि आप एक बड़ी डंप-फ़ाइल को पुनर्स्थापित करने के दौरान इस समस्या का अनुभव करते हैं और इस समस्या का पता लगा सकते हैं कि इसका मेरे समाधान की तुलना में नेटवर्क (जैसे कि स्थानीयहोस्ट पर निष्पादन) के साथ कुछ भी हो सकता है।

मेरे mysqldump ने कम से कम एक INSERT का आयोजन किया जो कि mysql के लिए गणना करने के लिए बहुत बड़ा था। आप इस चर को show variables like "net_buffer_length";अपने mysql-cli के अंदर लिखकर देख सकते हैं । आपके पास तीन संभावनाएँ हैं:

  • mysql के अंदर net_buffer_length बढ़ाएं -> इसके लिए सर्वर रीस्टार्ट की जरूरत होगी
  • डंप बनाएँ --skip-extended-insert, प्रति डालने के साथ एक लाइन का उपयोग किया जाता है -> हालांकि ये डंप पढ़ने के लिए बहुत अच्छे हैं, यह बड़े डंप के लिए उपयुक्त नहीं है> 1 जीबी क्योंकि यह बहुत धीमा हो जाता है
  • विस्तारित आवेषण के साथ डंप बनाएं (जो डिफ़ॉल्ट है) लेकिन नेट-बफर_लिफ्टर को सीमित करें जैसे --net-buffer_length NR_OF_BYTESकि NR_OF_BYTES सर्वर के net_buffer_length की तुलना में छोटा है -> मुझे लगता है कि यह सबसे अच्छा समाधान है, हालांकि धीमी गति से सर्वर को पुनरारंभ करने की आवश्यकता नहीं है।

मैंने mysqldump कमांड का पालन किया: mysqldump --skip-comments --set-charset --default-character-set=utf8 --single-transaction --net-buffer_length 4096 DBX > dumpfile


2

.Csv फ़ाइल लोड करते समय मुझे वही समस्या मिली। फ़ाइल को .sql में परिवर्तित कर दिया।

नीचे दिए गए आदेश का उपयोग करके मैं इस मुद्दे पर काम करना चाहता हूं।

mysql -u <user> -p -D <DB name> < file.sql

आशा है कि यह मदद करेगा।


2

यदि यहां अन्य सभी समाधान विफल हो जाते हैं - यह देखने के लिए कि क्या आपका सर्वर क्वेरी के दौरान मेमोरी से बाहर चल रहा है, अपने syslog (/ var / log / syslog या समान) की जाँच करें।

जब यह समस्या थी तो innodb_buffer_pool_size को स्वैप के बिना भौतिक मेमोरी के बहुत करीब सेट किया गया था। MySQL एक विशिष्ट विशिष्ट सर्वर की स्थापना की सिफारिश करता है, जो लगभग 80% भौतिक मेमोरी में innodb_buffer_pool_size करता है , मैंने इसे लगभग 90% तक सेट किया था, कर्नेल mysql प्रक्रिया को मार रहा था। Innodb_buffer_pool_size को लगभग 80% तक वापस ले जाया गया और इसने समस्या को ठीक कर दिया।


2

मेरे मामले में, कनेक्शन टाइमआउट अंतराल को 6000 या कुछ उच्चतर सेट करने से काम नहीं चला।

मैंने वही किया जो कार्यक्षेत्र कहता है कि मैं कर सकता हूं।

पढ़े गए समय को छोड़ने के लिए क्वेरी को DBMS.Set 0 से डेटा वापस करने में अधिकतम समय लग सकता है।

मैक वरीयताएँ पर -> SQL संपादक -> MySQL सत्र पर जाएँ -> सेट कनेक्शन पढ़ें टाइमआउट अंतराल 0 पर पढ़ें।

और यह काम करता है 😄


1

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

मैंने विदेशी प्रमुख घोषणाओं के बिना फिर से तालिका तालिका कथन को चलाने की कोशिश की और पाया कि यह काम कर रहा है।

फिर तालिका बनाने के बाद, मैंने ALTER TABLE क्वेरी का उपयोग करते हुए विदेशी कुंजी अवरोधों को जोड़ा।

उम्मीद है कि यह किसी की मदद करेगा।


1

मेरे साथ ऐसा इसलिए हुआ क्योंकि मेरा innodb_buffer_pool_size सर्वर पर उपलब्ध RAM आकार से बड़ा होना तय था। इसके कारण चीजें बाधित हो रही थीं और यह इस त्रुटि को जारी करता है। फिक्स my.cnf को innodb_buffer_pool_size के लिए सही सेटिंग के साथ अपडेट करना है।


1

कार्यक्षेत्र संपादन पर जाएं → वरीयताएँ → SQL संपादक → DBMS कनेक्शन समय पढ़े: 3000 तक। त्रुटि अब नहीं हुई।


0

के लिए जाओ:

संपादित करें -> वरीयताएँ -> SQL संपादक

वहाँ आप "MySQL सत्र" समूह में तीन फ़ील्ड देख सकते हैं, जहाँ अब आप नए कनेक्शन अंतराल (सेकंड में) सेट कर सकते हैं।


0

हमारा फ़ायरवॉल नियम बताता है कि मेरा कनेक्शन MYSQL से अवरुद्ध हो रहा था। फ़ायरवॉल नीति को हटा देने के बाद कनेक्शन को सफलतापूर्वक स्कीमा आयात करने में सक्षम होने की अनुमति दी गई है।


0

मेरे पास एक ही समस्या थी - लेकिन मेरे लिए समाधान एक डीबी उपयोगकर्ता था जो बहुत सख्त अनुमतियों के साथ था। मुझे मेज Executeपर क्षमता को अनुमति देना था mysql। अनुमति देने के बाद कि मेरे पास कोई ड्रॉपिंग कनेक्शन नहीं था



0

मैं एक संग्रहीत प्रॉप को चलाते हुए इसमें भाग गया- जो डेटाबेस में एक तालिका में बहुत सारी पंक्तियाँ बना रहा था। मैं 30 सेकंड की सीमा को पार करने के बाद त्रुटि को ठीक से देख सकता था।

मैंने अन्य उत्तरों में सभी सुझावों की कोशिश की। मुझे यकीन है कि इसमें से कुछ ने मदद की है, हालांकि- जो मेरे लिए वास्तव में काम कर रहा था वह कार्यक्षेत्र से SequelPro पर स्विच कर रहा था।

मैं अनुमान लगा रहा हूं कि यह कुछ क्लाइंट साइड कनेक्शन था जो मैं वर्कबेंच में नहीं देख सकता था। शायद यह किसी और को भी मदद करेगा?


0

यदि आप SQL वर्क बेंच का उपयोग कर रहे हैं, तो आप इंडेक्सिंग का उपयोग करने की कोशिश कर सकते हैं, अपनी मेज पर एक इंडेक्स जोड़कर, एक इंडेक्स जोड़ने के लिए, टेबल पर रिंच (स्पैनर) प्रतीक पर क्लिक करें, यह तालिका के लिए सेटअप को खोलना चाहिए, नीचे , इंडेक्स व्यू पर क्लिक करें, इंडेक्स नाम टाइप करें और इंडेक्स टाइप करें, इंडेक्स कॉलम में, अपनी तालिका में प्राथमिक कॉलम चुनें।

अन्य तालिकाओं पर अन्य प्राथमिक कुंजियों के लिए समान चरण करें।


0

SSH का उपयोग करने वालों के लिए अपने MySQL डेटाबेस से जुड़ने के लिए यहाँ एक उत्तर गायब है। आपको दो स्थानों की जाँच करने की आवश्यकता है 1 नहीं जैसा कि अन्य उत्तरों द्वारा सुझाया गया है:

कार्यक्षेत्र संपादित करें → प्राथमिकताएँ → SQL संपादक → DBMS

कार्यक्षेत्र संपादित करें → वरीयताएँ → एसएसएच → टाइमआउट

मेरे डिफ़ॉल्ट एसएसएच टाइमआउट बहुत कम सेट किए गए थे और मेरे टाइमआउट मुद्दों में से कुछ (लेकिन स्पष्ट रूप से सभी नहीं) पैदा कर रहे थे। के बाद, MySQL कार्यक्षेत्र को पुनरारंभ करने के लिए मत भूलना!

अंत में, यह आपके डीबी एडमिन से संपर्क करने और उन्हें mysql में wa_timeout और इंटरैक्टिव_ टाइमआउट संपत्तियां बढ़ाने के लिए कहने के लिए हो सकता है।

उम्मीद है की यह मदद करेगा!


0

तीन बातों का पालन करें और सुनिश्चित करें:

  1. क्या एकाधिक क्वेरी खो कनेक्शन दिखाती हैं?
  2. आप MySQL में सेट क्वेरी का उपयोग कैसे करते हैं?
  3. एक साथ + अपडेट क्वेरी कैसे हटाएं?

उत्तर:

  1. हमेशा निश्चित रूप से हटाने की कोशिश करें क्योंकि MySQL अपना स्वयं का निश्चित बनाता है और यदि अपडेशन के लिए कई टेबल एक ही क्वेरी बनाने की कोशिश करते हैं तो कभी-कभी कई क्वेरी खो कनेक्शन दिखाती है।
  2. हमेशा शीर्ष पर मूल्य सेट करें, लेकिन DELETE के बाद यदि इसकी स्थिति में SET मान शामिल नहीं है।
  3. यदि इन शर्तों के अलग-अलग नियमों पर विचार किया जाता है, तो पहले से ही उपयोग करें।

-1

के बारे में जाँच करें

OOM on /var/log/messages ,
modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ; 

उम्मीद है की यह मदद करेगा


-1

इसका आमतौर पर मतलब है कि आपके पास "MySQL सर्वर के वर्तमान संस्करण के साथ असंगतताएं हैं", mysql_upgrad देखें। मैं इसी मुद्दे में भाग गया और बस दौड़ना पड़ा:

mysql_upgrad --password दस्तावेज़ीकरण में कहा गया है कि, "mysql_upgrad को हर बार जब आप MySQL अपग्रेड करते हैं" निष्पादित किया जाना चाहिए।

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