यदि आपका ऐप MySQL के पुराने संस्करणों के लिए लिखा गया था और MySQL 5.7 में सख्त SQL मोड के साथ संगत नहीं है, तो आप सख्त SQL मोड को अक्षम कर सकते हैं। उदाहरण के लिए, WHMCS 6 और Craft 2 जैसे ऐप्स सख्त SQL मोड का समर्थन नहीं करते हैं।
यदि आप WHMCS 7 का उपयोग कर रहे हैं, तो WHMCS 7 के लिए MySQL को अनुकूलित करने पर हमारा लेख देखें।सख्त SQL मोड को अक्षम करने के लिए, SSH आपके सर्वर में रूट . के रूप में और नैनो . का उपयोग करके एक नई कॉन्फ़िगरेशन फ़ाइल बनाएं या अपनी पसंद का संपादक:
sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf
फ़ाइल में, इन दो पंक्तियों को दर्ज करें:
[mysqld] sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
CTRL + X . दबाकर फ़ाइल को सेव करें , फिर y , फिर ENTER परिवर्तनों की पुष्टि करने के लिए।
अंत में, इस कमांड के साथ MySQL को रीस्टार्ट करें:
sudo service mysql restart
यह परिवर्तन दो SQL मोड सेटिंग्स, STRICT_TRANS_TABLES और ONLY_FULL_GROUP_BY को अक्षम कर देता है, जिन्हें MySQL 5.7 में जोड़ा गया था और कुछ पुराने अनुप्रयोगों के लिए समस्याएँ पैदा करता है।
सख्त SQL मोड की पुष्टि करना अक्षम है
आप इस कमांड को रूट . के रूप में चलाकर पुष्टि कर सकते हैं कि सख्त SQL मोड अक्षम है :
sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'
यदि सख्त मोड अक्षम है, तो आप उस आदेश से कोई आउटपुट नहीं देखेंगे।
यदि सख्त मोड को अक्षम करने से आपके लिए कोई समस्या आती है, तो आप उस फ़ाइल को हटाकर और MySQL को पुनः प्रारंभ करके इसे पुनः सक्षम कर सकते हैं।
सख्त SQL मोड त्रुटियाँ कैसी दिखती हैं
यदि आपका ऐप सख्त SQL मोड के साथ संगत नहीं है, तो आपको अक्सर SQL त्रुटियाँ दिखाई देंगी जैसे:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'yourdbname.tblannouncements.date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_byके साथ असंगत है