2010-03-16 15 views
8

मैं प्रत्येक क्वेरी की शुरुआत में एक छोटा सा नोट जोड़ने में सक्षम होना चाहता हूं, इसलिए जब मैं इसे प्रक्रिया सूची में देखता हूं, या "mytop", तो मैं कह सकता हूं कि यह कहां चल रहा है।आप mysql प्रश्नों पर टिप्पणियां कैसे जोड़ते हैं, इसलिए वे लॉग में दिखाते हैं?

क्या ऐसा कुछ संभव है?

उत्तर

7

सुनिश्चित नहीं है कि यह काम करेगा, लेकिन कोशिश करने लायक है।

जो भी SQL क्वेरी सामान्य रूप से भेजी जाती है, उससे पहले "/* some comment or tag */ " जोड़ें।

यह संभव है कि MySQL सर्वर इस क्वेरी को अपने क्वेरी विश्लेषण/तैयारी के हिस्से के रूप में हटा देगा, लेकिन यह इसे भी छोड़ सकता है, इसलिए यह लॉग और अन्य निगरानी उपकरण जैसे दिखाता है।

मामले में टिप्पणी दूर छीन लिया हो, और चयन प्रश्नों संभालने, पर एक मामूली बदलाव के ऊपर यह दृष्टिकोण है एक गणना स्तंभ का चयन करने के बाद पहली बात यह है के रूप में कुछ की तरह

SELECT IF('some comment/tag' = '', 1, 0) AS BogusMarker, here-start-the-original-select-list 
-- or 
SELECT 'some [short] comment/tag' AS QueryID, here-start-the-original-select-list 

जोड़ने के लिए, हो सकता है परिणाम पंक्ति में से प्रत्येक के साथ एक अतिरिक्त कॉलम मान शुरू करने की कमी। उत्तरार्द्ध रूप, वास्तव में इस टिप्पणी के रूप में "टिप्पणी/टैग" मान का उपयोग करें, जो डिबगिंग उद्देश्यों के लिए सहायक हो सकता है।

+0

आप कुछ चुन सकते हैं जैसे 'SELECT IF (' owner '=' joe अतिरिक्त कॉलम से बचने के लिए ',' अतिरिक्त टिप्पणी ', original_first_column)' – Tgr

+1

FWIW MySQL सर्वर टिप्पणियों को बाहर नहीं करता है, लेकिन 'mysql' कमांड लाइन क्लाइंट करता है। –

0

यह आज पता चला:

/*!<min-version> code here */

कोड है कि केवल mysql से व्याख्या की जाएगी, और एक निर्धारित न्यूनतम संस्करण की केवल mysql एम्बेड करने के लिए:

mysql अजीब वाक्य रचना का समर्थन करता है।
इस यहाँ प्रलेखित है: http://dev.mysql.com/doc/refman/5.0/en/comments.html
(। उदाहरण के लिए mysqldump द्वारा प्रयुक्त)

ऐसी टिप्पणियां, बाहर पार्स नहीं किया जाएगा, और शामिल processlist में सामान्य लोगों के विपरीत, और है कि भले ही कोड वास्तव में निष्पादित नहीं किया गया है ।

ताकि आप की तरह

/*!999999 comment goes here */ select foo from bla;

एक टिप्पणी है कि processlist में दिखाई देगा के लिए कुछ कर सकते हैं, लेकिन कोड को बदल नहीं। (जब तक mysql devs अपने रिलीज नंबरिंग को फॉलो करने का फैसला नहीं करते हैं और 99.99.99 से अधिक संस्करण को छोड़ देते हैं, तो इस मामले में आपको केवल एक और अंक जोड़ना होगा।

+0

चार साल पहले पोस्ट किया गया था: http: // stackoverflow। com/एक/4100729/4271231 – r00t