2009-05-29 13 views
11

किसी दिए गए MySQL डीबी के लिए जिसे मैं कभी-कभी उपयोग और संशोधित करता हूं, मुझे हाल ही में कुछ तालिकाओं और संग्रहीत प्रक्रियाओं में कुछ बदलाव करना पड़ता था। इस डीबी में ऐसी जगहें हैं जहां प्रक्रियाएं अन्य प्रक्रियाओं को कॉल करती हैं। मुझे हर जगह शिकार करने का कार्य मिला कि मुझे इन संशोधित प्रक्रियाओं के लिए पैरामीटर को संशोधित करने की आवश्यकता है और डीबी को डंप करने और सभी कॉल विवरणों को खोजने के लिए डंप किए गए फ़ाइल पर टेक्स्ट खोज करने का प्रयास किया गया।सभी MySQL संग्रहीत प्रक्रिया कॉल खोजें?

मुझे आश्चर्य है कि ऐसा करने का एक बेहतर और आसान तरीका है या नहीं। मैंने एसओ पर यहां कुछ कर्सर खोजे और समाधान के लिए भी गुगल किया लेकिन वास्तव में कोई जवाब नहीं मिला। मुझे संदेह है कि कॉल किए गए कॉल की सूची या वहां कुछ उपयोगिता के साथ आने का कोई तरीका है जो इसे आसान बनाता है, लेकिन मुझे यह समाधान नहीं मिला है।

कोई भी विचार?

उत्तर

24

ठीक है, मैं अंत में निम्नलिखित समाधान पर ठोकर खाई:

INFORMATION_SCHEMA.ROUTINES तालिका जानकारी है कि बहुत उपयोगी हो सकता है जब से एक सपा एक और करने के लिए कॉल को ट्रैक करने की कोशिश कर रहा है। मैंने निम्नलिखित का उपयोग किया:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%SomeProc%"; 

और इसने कुछ स्टोर प्रक्रियाओं को पुनर्प्राप्त किया जिनमें कुछप्रोक शामिल था।

3

वाह यह कमाल है! मैं इस का उपयोग कर रहा मेरी MySQL डेटाबेस में पाठ के लिए खोज करने के लिए:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%search_string%"; 
3

मैं इस एक और अधिक संक्षिप्त सूची हो पाया। मैं अपनी सभी संग्रहित प्रो को '_sp' के साथ पोस्ट-फिक्स करता हूं जो उन्हें खोजते समय मदद करता है:

SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_NAME LIKE "%_sp"; 
संबंधित मुद्दे