मैंने ड्रॉप स्टेटमेंट के जेनरेट किए गए सेट को उपयोगी पाया, और इन सुधारों की अनुशंसा करता हूं:
- जेनरेट की गई बूंदों को अपने डेटाबेस तक इस तरह सीमित करें:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
नोट 1:यह DROP कथनों को निष्पादित नहीं करता है, यह आपको केवल उनकी एक सूची देता है। उन्हें निष्पादित करने के लिए आपको अपने SQL इंजन में आउटपुट को काटना और चिपकाना होगा।
नोट 2:यदि आपके पास दृश्य हैं, तो आपको प्रत्येक DROP TABLE `VIEW_NAME`
को सही करना होगा DROP VIEW `VIEW_NAME`
. के लिए स्टेटमेंट मैन्युअल रूप से।
- नोट, प्रति http://dev.mysql .com/doc/refman/5.5/hi/drop-table.html , कैस्केड के साथ गिरना व्यर्थ / भ्रामक है:
इसलिए, यदि आपको आवश्यकता हो तो ड्रॉप स्टेटमेंट काम करने के लिए:
SET FOREIGN_KEY_CHECKS = 0
यह रेफरेंशियल अखंडता जांच को अक्षम कर देगा - इसलिए जब आप अपनी जरूरत के अनुसार ड्रॉप्स का प्रदर्शन कर लेंगे, तो आप कुंजी जांच को रीसेट करना चाहेंगे
SET FOREIGN_KEY_CHECKS = 1
- अंतिम निष्पादन इस तरह दिखना चाहिए:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;
NB:SELECT के आउटपुट को आसान बनाने के लिए, mysql -B विकल्प मदद कर सकता है।