चूंकि ऊपर दिए गए उत्तरों में से कोई भी वास्तव में नहीं समझाता है कि क्या हुआ था, इसलिए मैंने इस मुद्दे पर कुछ और विवरण लाने का फैसला किया।
हां, समाधान MySQL अपग्रेड कमांड को चलाने के लिए है, इस प्रकार है: mysql_upgrade -u root -p --force
लेकिन क्या हुआ?
इस मुद्दे का मूल कारण भ्रष्टाचार है performance_schema
, जिसके कारण हो सकते हैं:
- कार्बनिक भ्रष्टाचार (वॉल्यूम काबूम, इंजन बग, कर्नेल ड्राइवर समस्या आदि)
- Mysql Patch के दौरान भ्रष्टाचार (विशेष रूप से प्रमुख संस्करण उन्नयन के लिए mysql पैच के दौरान ऐसा होना अस्वाभाविक नहीं है)
- एक सरल "ड्रॉप डेटाबेस परफॉर्मेंस_चेमा" स्पष्ट रूप से इस समस्या का कारण होगा, और यह उसी तरह के लक्षण पेश करेगा जैसे यह भ्रष्ट था
यह समस्या पैच से पहले भी आपके डेटाबेस पर मौजूद हो सकती है, लेकिन MySQL 5.7.8 पर विशेष रूप से यह हुआ कि ध्वज show_compatibility_56
ने डिफ़ॉल्ट रूप से डिफ़ॉल्ट मान को बदल दिया ON
है,OFF
। यह ध्वज नियंत्रित करता है कि इंजन विभिन्न MySQL संस्करणों पर चर (सत्र और वैश्विक) स्थापित करने और पढ़ने के लिए प्रश्नों पर कैसे व्यवहार करता है।
क्योंकि MySQL 5.7+ ने ऑन के performance_schema
बजाय इन चरों को पढ़ना और संग्रहीत करना शुरू कर दिया information_schema
था, इस ध्वज को ON
इस परिवर्तन के ब्लास्ट त्रिज्या को कम करने और उपयोगकर्ताओं को परिवर्तन के बारे में बताने और इसकी आदत डालने के लिए पहली रिलीज़ के रूप में पेश किया गया था।
ठीक है, लेकिन कनेक्शन विफल क्यों होता है? क्योंकि आपके द्वारा उपयोग किए जा रहे ड्राइवर (और इसके कॉन्फ़िगरेशन) के आधार पर, यह डेटाबेस के लिए शुरू किए गए हर नए कनेक्शन (जैसे show variables
, उदाहरण के लिए) के लिए रनिंग कमांड को समाप्त कर सकता है । क्योंकि इन आदेशों में से एक भ्रष्ट को एक्सेस करने की कोशिश कर सकता हैperformance_schema
, पूरी तरह से शुरू होने से पहले पूरे कनेक्शन को निरस्त कर देता है।
तो, सारांश में, आप कर सकते हैं पड़ा है (यह असंभव अब बताने के लिए है) performance_schema
या तो लापता या पैच से पहले भ्रष्ट। 5.7.8 के पैच ने इंजन को आपके चर को बाहर पढ़ने के लिए मजबूर किया performance_schema
(इसके बजाय information_schema
, जहां यह ध्वज के मुड़ने के कारण इसे पढ़ रहा था ON
)। चूंकि performance_schema
दूषित था, कनेक्शन विफल हो रहे हैं।
डाउनटाइम के बावजूद MySQL अपग्रेड चलाना सबसे अच्छा तरीका है। झंडे को चालू करना एक विकल्प है, लेकिन यह निहितार्थ के अपने सेट के साथ आता है क्योंकि यह पहले से ही इस धागे पर इंगित किया गया था।
दोनों को काम करना चाहिए, लेकिन परिणामों को वज़न और अपनी पसंद पता :)
5.7.8-rc
संस्करण को फिर से स्थापित करने और DB फुल बैकअप से पुनर्स्थापित करने पर विचार कर सकते हैं ।