MySQL ने वैरिएबल sql_mode . का डिफ़ॉल्ट मान बदल दिया है पिछले रिलीज के बाद से जो कई अनुप्रयोगों में मौजूदा कोड को तोड़ रहा है। यह ट्यूटोरियल बताता है कि एप्लिकेशन सुविधाओं के अनुसार sql_mode को कैसे बदला जाए। यह सर्वर के पुनरारंभ होने पर इस मान को संरक्षित करने के लिए कदम भी प्रदान करता है।
नोट :आप MySQL ट्यूटोरियल्स का भी अनुसरण कर सकते हैं - Ubuntu पर MySQL 8 कैसे स्थापित करें, Ubuntu से MySQL को पूरी तरह से कैसे निकालें, और MySQL का उपयोग करके बेसिक SQL क्वेरीज़ सीखें।
MySQL 8 में वैरिएबल sql_mode का डिफ़ॉल्ट मान नीचे दिखाया गया है।
# Default - sql_mode
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
मेरे मामले में विकल्प ONLY_FULL_GROUP_BY कोड तोड़ रहा है, इसलिए मैं इसे प्रदर्शन के लिए हटा दूंगा
सीधे अपडेट करें
हम sql_mode . के मान को सीधे अपडेट कर सकते हैं नीचे दिखाए गए आदेशों का उपयोग करना।
# Login
mysql -u root -p
# Globally
SET GLOBAL sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";
# Session
SET SESSION sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";
उपर्युक्त प्रश्नों का उपयोग करके sql_mode मान बदल दिया जाएगा। मुद्दा यह है कि वेरिएबल सर्वर रीस्टार्ट पर इसका डिफ़ॉल्ट मान वापस आ जाता है। जैसा कि अगले भाग में दिखाया गया है, हम मूल्य को संरक्षित कर सकते हैं।
स्थायी रूप से अपडेट करें
हम my.cnf . को अपडेट करके sql_mode के मान को सुरक्षित रख सकते हैं फ़ाइल। इस फ़ाइल का स्थान सर्वर वातावरण और संस्करण के आधार पर भिन्न होता है। इस फ़ाइल के सबसे सामान्य स्थानों में शामिल हैं/etc/my.
लिनक्स मिंट 18 . पर , फ़ाइल स्थान है /
# Search the default config
mysqld --verbose --help | grep -A 1 "Default options"
# Output
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
MySQL सर्वर सिस्टम स्तर और स्थानीय स्तर दोनों पर डिफ़ॉल्ट कॉन्फ़िगरेशन के लिए उपर्युक्त स्थानों को देखेगा। my.cnf फ़ाइल को नीचे दिखाए अनुसार अपडेट करें। मैंने प्रदर्शन के लिए नैनो संपादक का उपयोग किया है
# Update my.cnf
sudo nano /etc/mysql/my.cnf
# Scroll down and update the file as shown below
...
...
# # The MySQL Server configuration file. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # * IMPORTANT: Additional settings that can override those from this file! # The files must end with '.cnf', otherwise they'll be ignored. # !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/ [mysqld] sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
अब फाइल को सेव करें और एडिटर से बाहर निकलें। [mysqld] . को शामिल करना सुनिश्चित करें चर के ऊपर।
जैसा कि ऊपर दिखाया गया है, my.cnf फ़ाइल में हमारे द्वारा कॉन्फ़िगर किए गए चर sql_mode के मान को सेट करने के लिए MySQL सर्वर को पुनरारंभ करें।
# Using init
sudo /etc/init.d/mysqld restart
# OR
sudo /etc/init.d/mysql restart
# Using service
sudo service mysql restart
# Using systemd
sudo systemctl restart mysqld.service
# OR
sudo systemctl restart mysql
सारांश
इस ट्यूटोरियल में, हमने MySQL वेरिएबल sql_mode . के मान को अपडेट किया है और इसे सर्वर रीस्टार्ट पर स्थायी रूप से सुरक्षित भी रखा है।