बड़ी एसक्यूएल फ़ाइल आयात करते समय MySQL सर्वर चला गया है




phpmyadmin login (13)

मेरे लिए यह समाधान काम नहीं कर सका इसलिए मैंने निष्पादित किया

SET GLOBAL max_allowed_packet=1073741824;

मेरे एसक्यूएल क्लाइंट में।

यदि इसे MYSQL सेवा चलाने के साथ बदलने में सक्षम नहीं है, तो आपको सेवा को रोकना चाहिए और "my.ini" फ़ाइल में चर बदलना चाहिए।

उदाहरण के लिए:

max_allowed_packet=20M

मैंने phpMyAdmin के माध्यम से एक बड़ी एसक्यूएल फ़ाइल आयात करने की कोशिश की ... लेकिन यह त्रुटि दिखा रहा था

'MySQL सर्वर रुक गया है'

क्या करें?


जब मैंने 16 जीबी एसक्यूएल फाइल पर आयात किया था, तो मुझे यह त्रुटि और अन्य संबंधित थे। मेरे लिए, my.ini संपादित करना और [mysqld] अनुभाग में निम्नलिखित (कई अलग-अलग पोस्टों के आधार पर) सेट करना:

max_allowed_packet      = 110M
innodb_buffer_pool_size=511M
innodb_log_file_size=500M
innodb_log_buffer_size = 800M
net_read_timeout        = 600
net_write_timeout       = 600

यदि आप विंडोज के तहत चल रहे हैं, तो नियंत्रण कक्ष, सेवाओं पर जाएं, और MySQL के विवरण देखें और आप देखेंगे कि my.ini कहां है। फिर my.ini को संपादित और सहेजने के बाद, mysql सेवा को पुनरारंभ करें (या कंप्यूटर को पुनरारंभ करें)।

यदि आप HeidiSQL का उपयोग कर रहे हैं, तो आप इसका उपयोग करके कुछ या सभी सेट भी कर सकते हैं।


यदि विफल होने में लंबा समय लगता है, तो wait_timeout चर wait_timeout

यदि यह तुरंत विफल हो जाता है, max_allowed_packet चर max_allowed_packet ; यह अभी भी काम नहीं करता है, सुनिश्चित करें कि आदेश मान्य एसक्यूएल है। मेरा अनचाहे उद्धरण था जो सबकुछ खराब कर देता था।

साथ ही, यदि संभव हो, तो एक एसक्यूएल कमांड के आवेषणों की संख्या को सीमित करने पर विचार करें, कहें, 1000. आप एक स्क्रिप्ट बना सकते हैं जो INSERT को पुन: प्रस्तुत करके एक से अधिक बयानों को बनाता है ... प्रत्येक एन आवेषण का हिस्सा।


यदि आप XAMPP पर काम कर रहे हैं तो आप MySQL सर्वर को निम्न परिवर्तनों के साथ समस्या दूर कर सकते हैं ठीक कर सकते हैं ..

अपनी my.ini फ़ाइल my.ini स्थान खोलें (डी: \ xampp \ mysql \ bin \ my.ini)

निम्नलिखित परिवर्तनीय मानों को बदलें

max_allowed_packet = 64M
innodb_lock_wait_timeout = 500

मैंने "max_allowed_packet" को 1024 एम तक अपडेट किया, लेकिन यह अभी भी काम नहीं कर रहा था। यह पता चला कि मेरी तैनाती स्क्रिप्ट चल रही थी:

mysql --max_allowed_packet=512M --database=mydb -u root < .\db\db.sql

यदि आप इसे इस तरह से दान करते हैं तो कमांड लाइन से स्पष्ट संख्या को स्पष्ट रूप से निर्दिष्ट करना सुनिश्चित करें।


यदि आपके डेटा में BLOB डेटा शामिल है:

ध्यान दें कि कमांड लाइन से डेटा का आयात बीएलओबी डेटा पर चकित होता है, जिसके परिणामस्वरूप 'MySQL सर्वर चला गया है' त्रुटि।

इससे बचने के लिए, mysqldump को फिर से बनाएं लेकिन --hex-blob ध्वज के साथ:

http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_hex-blob

जो अन्य पाठ के बीच बाइनरी के बजाय डेटा फ़ाइल को हेक्स मानों के साथ लिख देगा।

PhpMyAdmin में विकल्प भी है "हेक्साडेसिमल नोटेशन में द्विआधारी कॉलम डंप करें (उदाहरण के लिए," एबीसी "0x616263 बन जाता है)" जो अच्छी तरह से काम करता है।

ध्यान दें कि एक दीर्घकालिक बग है (दिसंबर 2015 तक) जिसका अर्थ है कि GEOM कॉलम परिवर्तित नहीं किए गए हैं: mysqldump का उपयोग कर एक GEOMETRY कॉलम के साथ एक टेबल का बैक अप लें? इसलिए PhpMyAdmin जैसे प्रोग्राम का उपयोग करना एकमात्र कामकाज प्रतीत होता है (ऊपर उल्लिखित विकल्प सही ढंग से जीईओएम कॉलम को परिवर्तित करता है)।


मैं कुछ बड़ी गणना कर रहा हूं जिसमें माइस्क्ल कनेक्शन लंबे समय तक और भारी डेटा के साथ रहने के लिए शामिल है। मैं इस "माइस्क्ल को दूर जाने का मुद्दा" का सामना कर रहा था। तो मैंने प्रश्नों को अनुकूलित करने की कोशिश की लेकिन उसने मेरी मदद नहीं की तो मैंने mysql चर सीमा को बढ़ाया जो डिफ़ॉल्ट रूप से कम मान पर सेट है।

wait_timeout max_allowed_packet

उस सीमा तक जो आपके लिए उपयुक्त है, यह किसी भी संख्या * 1024 (बाइट्स) होना चाहिए। आप ' mysql -u उपयोगकर्ता नाम - पी ' कमांड का उपयोग करके टर्मिनल में लॉगिन कर सकते हैं और इन चर सीमाओं के लिए जांच और परिवर्तन कर सकते हैं।


GoDaddy के लिए होस्टिंग साझा किया

GoDaddy पर होस्टिंग खातों को साझा किया गया, PHP.ini आदि फ़ाइलों को ट्विक करना मुश्किल है। हालांकि, एक और तरीका है और यह सिर्फ मेरे लिए पूरी तरह से काम किया। (मैंने सफलतापूर्वक 3.8 एमबी। एसक्यूएल टेक्स्ट फ़ाइल अपलोड की है, जिसमें 3100 पंक्तियां और 145 कॉल हैं। PhpMyAdmin में आयात कमांड का उपयोग करके, मुझे डरावना MySQL सर्वर त्रुटि हो गई है , और कोई और जानकारी नहीं है।)

मैंने पाया कि मैट बुचर का सही जवाब था। मैट की तरह, मैंने छोटे प्रकार के बड़े आयात को तोड़ने वाली स्क्रिप्ट लिखने के लिए, काटने वाले आकारों में MySQL डेटाबेस निर्यात करने से सभी प्रकार की चालों की कोशिश की थी। लेकिन यहां क्या काम किया गया है:

(1) सीपीएएनईएल ---> फाइलें (समूह) ---> बैकअप

(2 ए) "आंशिक बैकअप" शीर्षक के तहत ...
(2 बी) "एक MySQL डेटाबेस बैकअप डाउनलोड करें" के तहत
(2 सी) अपना डेटाबेस चुनें और बैकअप डाउनलोड करें (यह चरण वैकल्पिक है, लेकिन बुद्धिमान)

(3 ए) शीर्षक के तहत सीधे 2 बी के दाईं ओर, "एक MySQL डेटाबेस बैकअप पुनर्स्थापित करें"
(3 बी) अपने स्थानीय ड्राइव से .SQL आयात फ़ाइल चुनें
(3 सी) सच्ची खुशी तुम्हारी होगी (जल्द ही ....) मेरा लगभग 5 सेकंड लग गया

मैं एक ही टेबल आयात करने के लिए इस विधि का उपयोग करने में सक्षम था। मेरे डेटाबेस में कुछ भी प्रभावित नहीं हुआ था - लेकिन यह है कि उपरोक्त चरण (2) का बचाव करने के उद्देश्य से है।

टिप्पणियाँ:
ए। यदि आप अनिश्चित हैं कि एक .SQL आयात फ़ाइल कैसे बनाएं, तो तालिका निर्यात करने के लिए phpMyAdmin का उपयोग करें और उस फ़ाइल संरचना को संशोधित करें।

स्रोत: मैट कसाई 2010 लेख


जैसा कि here बताया गया here :

MySQL सर्वर के लिए दो सबसे आम कारण (और फ़िक्स) चला गया है (त्रुटि 2006) हैं:

सर्वर ने समय समाप्त कर दिया और कनेक्शन बंद कर दिया। कैसे ठीक करना है:

  1. जांचें कि mysqld की my.cnf कॉन्फ़िगरेशन फ़ाइल में wait_timeout चर पर्याप्त है। डेबियन पर: sudo nano /etc/mysql/my.cnf , sudo nano /etc/mysql/my.cnf wait_timeout = 600 सेकंड सेट करें (जब आप त्रुटि 2006 sudo nano /etc/mysql/my.cnf तो आप इस मान को ट्वीक / घटा सकते हैं), फिर sudo /etc/init.d/mysql restart । मैंने जांच नहीं की, लेकिन wait_timeout के लिए डिफ़ॉल्ट मान लगभग 28800 सेकेंड (8 घंटे) हो सकता है।

  2. सर्वर ने एक गलत या बहुत बड़ा पैकेट गिरा दिया। अगर mysqld को एक पैकेट मिलता है जो बहुत बड़ा या गलत होता है, तो यह मानता है कि क्लाइंट के साथ कुछ गलत हो गया है और कनेक्शन बंद कर देता है। आप my.cnf फ़ाइल में max_allowed_packet के मान को बढ़ाकर अधिकतम पैकेट आकार सीमा बढ़ा सकते हैं। डेबियन पर: sudo nano /etc/mysql/my.cnf , max_allowed_packet = 64M सेट करें (त्रुटि 2006 समाप्त होने पर आप इस मान को ट्वीक / घटा सकते हैं), फिर sudo /etc/init.d/mysql restart

संपादित करें: ध्यान दें कि MySQL विकल्प फ़ाइलों में उनके आदेश पहले से ही टिप्पणियों के रूप में उपलब्ध नहीं हैं (उदाहरण के लिए php.ini में)। तो आपको my.cnf या my.ini में कोई भी परिवर्तन / tweak टाइप करना होगा और उन्हें [client] , [myslqd] जैसे विकल्पों के उचित समूह के तहत, mysql/data निर्देशिका या किसी अन्य पथ में [myslqd] ... आदि, उदाहरण के लिए:
[mysqld]
wait_timeout = 600
max_allowed_packet = 64M
फिर सर्वर को पुनरारंभ करें। उनके मान प्राप्त करने के लिए, कंसोल में टाइप करें:
select @@wait_timeout;
select @@max_allowed_packet;


सुनिश्चित करें कि mysqld प्रक्रिया systemd जैसे सेवा प्रबंधकों की वजह से पुनरारंभ नहीं होती है।

मुझे केंद्र 7 के साथ योनि में यह समस्या थी। कॉन्फ़िगरेशन tweaks मदद नहीं की थी। बाहर निकला यह प्रणाली थी जिसने हर बार मेस्क्ल्ड सेवा को मार दिया जब यह बहुत अधिक स्मृति ले गया।


ऐसा होने का दूसरा कारण स्मृति से बाहर हो रहा है। चेक / var / log / संदेशों को जांचें और सुनिश्चित करें कि mysqld को आपकी मशीन की तुलना में अधिक स्मृति आवंटित करने के कारण स्थापित नहीं किया गया है।

आपकी mysqld प्रक्रिया वास्तव में कर्नेल द्वारा मारे जा सकती है और फिर इसे "सुरक्षित_mysqld" प्रक्रिया द्वारा फिर से शुरू की जा सकती है।

शीर्ष का उपयोग करें और यह देखने के लिए कि आपका हेडरूम क्या है, स्मृति आवंटन देखें।

इसे बदलने से पहले my.cnf का बैकअप लें।


डेटाबेस में डुप्लिकेट करते समय मुझे आज भी इसी तरह की त्रुटि थी (MySQL सर्वर चला गया है ...), लेकिन जब मैंने mysql.server को पुनरारंभ करने का प्रयास किया, तो मुझे त्रुटि मिली

ERROR! The server quit without updating PID ...

इस तरह मैंने इसे हल किया: मैंने एप्लीकेशन / उपयोगिताएं खोली / और गतिविधि मॉनीटर चलाया

 quit mysqld

फिर त्रुटि समस्या को हल करने में सक्षम था

mysql.server restart

मैंने इस समस्या को इस छोटी /etc/mysql/my.cnf फ़ाइल के साथ हल किया:

[mysqld]
wait_timeout = 600
max_allowed_packet = 100M






phpmyadmin