मैं एक साधारण टूल बना रहा हूं जो MySQL कमांड की एक स्ट्रिंग प्राप्त करेगा और इसे चलाएगा (क्रमशः कई डीबी सर्वरों पर)। मैं उपयोगकर्ताओं को समझदार होने पर भरोसा करता हूं, लेकिन गलतियां होती हैं, और मैं मूल टाइपो को रोकने के लिए एक तरीका ढूंढ रहा हूं:कैसे जांचें कि MySQL क्वेरी इसे निष्पादित किए बिना मान्य है या नहीं?
रनटाइम पर, अपेक्षाकृत सरल (अपेक्षाकृत सरल) MySQL क्वेरी देखने के लिए कोई तरीका है कि वे ' वाक्य रचनात्मक रूप से सही है?
मैं अर्थपूर्ण शुद्धता की तलाश नहीं कर रहा हूं, उदा। तालिका के नाम या प्रयोज्यता में शामिल हों; एसक्यूएल प्रश्नों के लिए एक वर्तनी जांच की तरह कुछ।
दूसरे शब्दों में,
SELECT * FROM x;
या
INSERT INTO x SET id=1,bar="foo";
, वैध चिह्नित किया जाएगा, जबकि उन में से किसी से नहीं होगा:
SELECT FROM x;
SECLET * RFOM x;
ISNETR INTO x SET id=1;
HJBGYGCRYTCY;
SELECT
रों के लिए, मैं EXPLAIN
मोड़ सकता है मेरी जरूरतों के लिए - EXPLAIN SELECT (...)
चलाएं और त्रुटियों के लिए देखें, लेकिन वहां बहुत कुछ है अन्य आदेशों की जांच करने के लिए भी?
मैं स्क्रिप्ट निष्पादित करने से पहले प्रश्नों की जांच करने का एक त्वरित तरीका ढूंढ रहा था। एक पार्सर लिखना रास्ता ओवरबोर्ड होगा - अगर यह पहले सर्वर पर टूट जाता है, तो यह केवल एक त्रुटि से बाहर निकल जाएगा (माना जाता है कि स्क्रिप्ट उपयोगकर्ता (सिस्टम प्रशासक) यह जानकर पर्याप्त हैं कि वे क्या कर रहे हैं)। – Piskvor
+1 तैयार करने के लिए। यह मेरे ज्ञान के लिए ऐसा करने का एकमात्र तरीका है। – willasaywhat
ऐसा लगता है कि MySQL खाली डीबी पर तैयार नहीं हो सकता है। और कुछ वाक्य रचनात्मक त्रुटियां दिखाई नहीं देती हैं, उदाहरण के लिए एक ही नाम वाले दो फ़ील्ड। – powtac