Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में SQL मोड अपडेट करें

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. सीएनएफ , /etc/mysql /my.cnf , और /usr /etc/my.cnf . यह उपयोगकर्ता के स्थानीय पथ पर भी हो सकता है ~/.my.cnf . मेरे सिस्टम में Ubuntu 18.04 LTS और MySQL 8 होने पर, मुझे यह फ़ाइल /etc/mysql /my.cnf

लिनक्स मिंट 18 . पर , फ़ाइल स्थान है /usr /my.cnf . आप नीचे दिखाए गए कमांड का उपयोग करके फ़ाइल को भी खोज सकते हैं।

# 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 . के मान को अपडेट किया है और इसे सर्वर रीस्टार्ट पर स्थायी रूप से सुरक्षित भी रखा है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे mysql में डेटा पंक्तियों से नई पंक्ति वर्ण निकालने के लिए?

  2. क्या आप एक MySQL क्वेरी में किसी फ़ील्ड को विभाजित/विस्फोट कर सकते हैं?

  3. स्टैंडअलोन MySQL सर्वर

  4. अपरिभाषित फ़ंक्शन mysql_connect ()

  5. MySQL बनाम MongoDB