MySQL, और MariaDB, सख्त मोड नियंत्रित करता है कि डेटा बदलने वाले प्रश्नों में अमान्य या अनुपलब्ध मानों को कैसे नियंत्रित किया जाता है; इसमें INSERT, UPDATE और CREATE TABLE स्टेटमेंट शामिल हैं। MySQL सख्त मोड सक्षम होने के साथ, जो कि डिफ़ॉल्ट स्थिति है, अमान्य या अनुपलब्ध डेटा क्वेरी को संसाधित करने का प्रयास करते समय चेतावनियां या त्रुटियां पैदा कर सकता है।
जब सख्त मोड अक्षम हो जाता है तो उसी क्वेरी में अमान्य, या अनुपलब्ध, मान समायोजित हो जाएंगे और एक साधारण चेतावनी उत्पन्न होगी। यह पसंदीदा परिणाम की तरह लग सकता है, हालांकि सख्त मोड अक्षम होने पर कुछ क्रियाएं अप्रत्याशित परिणाम दे सकती हैं; उदाहरण के लिए, जब डाला जा रहा मान अधिकतम वर्ण सीमा से अधिक हो जाता है तो इसे सीमा में फिट करने के लिए छोटा कर दिया जाएगा।
MySQL के सख्त मोड को अक्षम करने के कई कारण हो सकते हैं, हालांकि सबसे आम है जब कोई सर्वर WHMCS चला रहा हो - यह उस टूल की एक आवश्यकता है।
उड़ान पूर्व जांच
- ये निर्देश विशेष रूप से cPanel के साथ प्रबंधित लिक्विड वेब सर्वर पर MySQL सख्त मोड को अक्षम करने के लिए हैं।
- सर्वर या तो MySQL 5.6/5.7 या MariaDB 10.x पर चलना चाहिए
- SSH के माध्यम से कमांड लाइन और रूट लेवल एक्सेस इस ट्यूटोरियल को फॉलो करने के लिए आवश्यक होगा।
चरण #1:बैकअप बनाएं, हमेशा!
जब भी किसी सर्वर पर फ़ाइलों को संशोधित किया जाता है, तो पहले से किसी न किसी रूप में बैकअप लेना हमेशा सबसे अच्छा अभ्यास होता है। यह सुनिश्चित करता है कि कुछ गड़बड़ होने पर आपके पास परिवर्तनों को वापस लाने का एक तरीका है; यह फायदेमंद भी है क्योंकि यह ट्रैक करने में मदद करता है कि कब और क्या परिवर्तन किए गए थे।
रूट उपयोगकर्ता के साथ SSH में लॉग इन करते समय, निम्न कार्य करें:
cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}
चरण #2:MySQL स्ट्रिक्ट मोड अक्षम करें
सर्वर और वर्तमान कॉन्फ़िगरेशन के आधार पर आपको सर्वर पर निम्न फ़ाइलों में से एक या दोनों को संपादित करने की आवश्यकता हो सकती है। आम तौर पर, प्रासंगिक कॉन्फ़िगरेशन लाइनें उनमें से केवल एक में होती हैं, हालांकि, यह बिना किसी समस्या के किसी एक में हो सकती है; इसलिए आम तौर पर दोनों की जांच करना सबसे अच्छा होता है।
फ़ाइलों को संपादित करने के लिए, आप फ़ाइल को अपने पसंदीदा कमांड लाइन संपादक के साथ खोलेंगे। इस उदाहरण में, हम 'विम' का उपयोग करते हैं।
vim /usr/my.cnf
vim /etc/my.cnf
ऊपर दी गई प्रत्येक फ़ाइल में आप निम्न सामग्री वाली एक पंक्ति की तलाश करेंगे:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
यदि आपको उपरोक्त के समान एक पंक्ति मिलती है जो `sql_mode` चर सेट कर रही है तो आपको MySQL सख्त मोड को अक्षम करने के लिए इसे निम्न पंक्ति से बदलना होगा।
sql_mode=""
एक बार यह समायोजन हो जाने के बाद, या आपने पुष्टि कर दी है कि फ़ाइल को समायोजित करने की आवश्यकता नहीं है, तो आप फ़ाइल को सहेजेंगे और बंद कर देंगे।
चरण #3:MySQL सेवा को पुनरारंभ करें
अंत में, इन परिवर्तनों को प्रभावी बनाने के लिए आपको MySQL सेवा को पुनरारंभ करना होगा क्योंकि यह केवल कॉन्फ़िगरेशन फ़ाइलों को पढ़ेगा जब यह प्रारंभ में लोड हो जाएगा। MySQL को नई कॉन्फ़िगरेशन फ़ाइलों का उपयोग करने के लिए बाध्य करने के लिए आप निम्न कार्य करेंगे:
CentOS 7 सर्वर के लिए:systemctl restart mysql
CentOS 6 और पूर्व के लिए:/etc/init.d/mysql restart
सर्वर पर यह आदेश जारी करने के बाद MySQL सेवा फिर से शुरू हो जाएगी और किए गए परिवर्तनों को लोड करेगी। यदि सभी निर्देशों का पालन किया गया और पूरा किया गया, तो MySQL सख्त मोड को अब अक्षम कर दिया जाना चाहिए।
यह सत्यापित करने के लिए कि प्रक्रिया ठीक से पूरी हुई थी, आप निम्नलिखित चला सकते हैं:
mysql -e "SELECT @@sql_mode;"
आउटपुट निम्न के जैसा दिख सकता है:
+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+
यदि आपके कोई प्रश्न हैं या आप स्वयं इन परिवर्तनों को करने में सहज नहीं हैं, तो कृपया बेझिझक Heroic Support® से संपर्क करें।