2015-05-22 13 views
7

मुझे अभी एहसास हुआ कि एसक्यूएल फाइलों (.sql) में लाइनें हैं जो /*! से शुरू होती हैं और टिप्पणियां नहीं हैं और उन्हें कुछ सिस्टम स्तर के कार्यों को निष्पादित करने के लिए निष्पादित किया जाता है।माइस्क्ल स्लैश तारांकन धमाका

मुझे पता है कि क्या /*! के साथ शुरू लाइनों वास्तव में MySQL और क्यों (मेरे उदाहरण में 4000) प्रतीक के बगल में है कि नंबर का उपयोग के लिए इसका मतलब यह चाहते हैं।

यहाँ उदाहरण है:

/*!40000 ALTER TABLE `my_table` DISABLE KEYS */; 
INSERT INTO my_table VALUES ('value1','value2'); 
/*!40000 ALTER TABLE `my_table` ENABLE KEYS */; 

संपादित करें: मुझे नहीं लगता कि इस सवाल का linked question अनुसार डुप्लिकेट है है। यह प्रश्न इस बारे में है कि MySQL इसका कैसे व्यवहार करता है। यह नहीं पूछा कि इन टिप्पणियों को कैसे हटाया जाए और प्रश्न इसे MySQL के लिए टिप्पणी के रूप में नहीं देखता है।

+1

: उदाहरण के लिए, MySQL सर्वर निम्नलिखित बयान में STRAIGHT_JOIN कीवर्ड पहचानता है, लेकिन अन्य सर्वर नहीं होगा /refman/5.1/en/comments.html), यह वाक्यविन्यास उस कोड को इंगित करता है जो * MySQL के लिए विशिष्ट है, * केवल MySQL द्वारा निष्पादित किया जाना चाहिए और कोई अन्य SQL संबंधपरक डेटाबेस प्रबंधक नहीं है। –

+0

@ ओली-जोन्स: मुझे नहीं लगता कि यह प्रश्न लिंक किए गए प्रश्न के अनुसार एक डुप्लिकेट है। यह नहीं पूछा कि इन टिप्पणियों को कैसे हटाया जाए और प्रश्न इसे MySQL के लिए टिप्पणी के रूप में नहीं देखता है। – PCM

उत्तर

9

उन पंक्तियों को किसी भी आरडीबीएमएस द्वारा अन्य टिप्पणियों के रूप में माना जाता है जो MySQL। MySQL हालांकि उन्हें निष्पादित करेगा।

यह अन्य सिस्टम के लिए इसे तोड़ने के बिना SQL फ़ाइल के अंदर MySQL विशिष्ट कीवर्ड या वाक्यविन्यास को सक्षम बनाता है।

संख्या आपके द्वारा लक्षित संस्करण का प्रतिनिधित्व करती है, उदाहरण के लिए /*!32302 TEMPORARY */ केवल MySQL संस्करण 3.23.02 या उच्चतम द्वारा निष्पादित किया जाएगा।

MySQL सर्वर सी शैली टिप्पणियों के कुछ भिन्न रूप का समर्थन करता है:

अधिक जानकारी के लिए the docs पर एक नज़र डालें। ये सक्षम आप कोड है कि MySQL एक्सटेंशन शामिल हैं, लेकिन अभी भी पोर्टेबल ये पर्चा की टिप्पणी का उपयोग करना है लिखने के लिए:

/*! MySQL-specific code */ 

इस मामले में, MySQL सर्वर पार्स करके यह के रूप में टिप्पणी के भीतर कोड निष्पादित करता है कोई अन्य SQL कथन होगा, लेकिन अन्य SQL सर्वर एक्सटेंशन को अनदेखा कर देंगे। करने के लिए [टिप्पणी के लिए प्रलेखन] (https://dev.mysql.com/doc अनुसार

SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ... 
संबंधित मुद्दे