हमारे पास कुछ सौ तालिकाओं वाला डेटाबेस है। विदेशी_की का उपयोग कर टेबल्स INNODB का उपयोग करें।MySQL अवैध विदेशी कुंजी खोजें
कभी-कभी हम अपने विकास, चरण और उत्पादन डेटाबेस के बीच डेटा (mysqldump
का उपयोग करके व्यक्तिगत तालिकाओं) स्थानांतरित करते हैं। mysqldump
डेटा को आयात करने के लिए सभी विदेशी कुंजी जांच अक्षम करता है।
तो समय के साथ हमारे कुछ गैर-उत्पादन डेटाबेस कुछ अनाथ रिकॉर्ड के साथ समाप्त होते हैं।
मैं एक ऐसी स्क्रिप्ट लिखने वाला था जो किसी भी अवैध (एक लापता रिकॉर्ड को इंगित करने वाली कुंजी) को एक संपूर्ण MySQL डेटाबेस के लिए विदेशी कुंजी ढूंढ और पहचान लेगा।
मुझे पता है कि मैं प्रत्येक तालिका और फकी को एक-एक करके जांचने के लिए एक प्रश्न लिख सकता हूं, लेकिन सोच रहा था कि यह पहले से ही ऐसा करने के लिए एक उपकरण हो सकता है।
मैं इस तरह की एक स्क्रिप्ट लिखने से पहले जांचूंगा कि यह देखने के लिए कि पहले से कोई बाहर है या नहीं।
Google की खोज थोड़ी सी ... आश्चर्यजनक रूप से मुझे कुछ भी नहीं मिला।
आपका क्या मतलब है, 'अमान्य'? अनाथ रिकॉर्ड? एफके के साथ टेबल जो टेबल पर इंगित करते हैं जो अब मौजूद नहीं हैं? –
आप अपना डेटाबेस स्वचालित रूप से ऐसा कर सकते हैं (आप जिस डीबी इंजन का उपयोग कर रहे हैं उसके आधार पर) और इसे हटाए गए कैस्केड पर रखें ताकि संदर्भित अखंडता को बरकरार रखा जा सके। –
स्टीफन टिप्पणी के अतिरिक्त यह जान लें कि आप बच्चे को हटा सकते हैं या इसे अपडेट कर सकते हैं, आपको इसे हटाना नहीं है। – TomDunning