कमांड लाइन से सभी MySQL टेबल कैसे छोड़ें?


29

आमतौर पर मैं टर्मिनल खोलता हूं। एक दूरस्थ MySQL डेटाबेस से जुड़ता हूं।

तब मैं इस कमांड का उपयोग टेबल छोड़ने के लिए करता हूं:

mysql> drop table [table name];

लेकिन डेटाबेस में सभी तालिकाओं को छोड़ने के लिए मुझे क्या चाहिए कमांड लाइन।

अगर मैं उपयोग करता हूं:

mysql> drop database [database name];

मैं डेटाबेस को पूरी तरह से नष्ट कर दूंगा और मैं फिर से टेबल नहीं बना पाऊंगा। क्या मैं सही हू?


जवाबों:


27

आप डेटाबेस को छोड़ सकते हैं फिर तुरंत इसे पुनः बनाएँ:

mysql> drop database [database name];
mysql> create database [database name];

या आप डेटाबेस में प्रत्येक तालिका को छोड़ने के लिए एक स्क्रिप्ट का उपयोग कर सकते हैं।


ठीक है, बस यह सुनिश्चित करने के लिए: मैं इस लाइन के साथ टर्मिनल में दूरस्थ डेटाबेस से जुड़ता हूं: / एप्लीकेशन / एमएनपी / लाइब्रेरी / बिन / mysql -h 80.54.554.10 -u adm_user -p my_db । डेटाबेस को छोड़ने और बनाने के बाद जैसा कि आपने कहा था कि क्या मुझे इस कनेक्शन मूल्यों को बदलने की आवश्यकता होगी या वे समान रहेंगे?
शेफेलोन

1
@chef - सभी तालिकाओं को छोड़ने और पूरे डेटाबेस को छोड़ने का समान प्रभाव नहीं होता है। यदि आप केवल सारणी को छोड़ देते हैं तो किसी भी डेटाबेस की व्यापक अनुमतियाँ बनी रहेंगी, ऐसा नहीं है यदि आप डेटाबेस को छोड़ते / फिर से बनाते हैं।
निफले

10
@chefnelone: ​​सावधान! डेटाबेस को गिराना संग्रहीत प्रक्रियाओं और उपयोगकर्ता-परिभाषित विचारों को भी छोड़ देता है।
रोलैंडम्यूसीडीडीबीए

मेरे लिए काफी स्पष्ट है। मैं प्रत्येक तालिका को हटाने के लिए स्क्रिप्ट के साथ जाऊंगा।
शेफेलोन

1
यह पूरी तरह से असुरक्षित है, टिप्पणियों को देखें http://stackoverflow.com/a/12403742/1713660
vladkras

10

आप निम्न आदेश आज़मा सकते हैं:

mysqldump --no-data --add-drop-table DB_NAME | grep ^DROP | mysql -v DB_NAME

या:

mysql --silent --skip-column-names -e "SHOW TABLES" DB_NAME | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -v DB_NAME

DB_NAMEआपका डेटाबेस नाम कहाँ है डेटाबेस क्रेडेंशियल जिसे आप ~/.my.cnfया तो निर्दिष्ट कर सकते हैं या उन्हें कमांड में जोड़ सकते हैं (उदाहरण के लिए -uroot -proot)।

आपके डेटाबेस उपयोगकर्ता को इसे छोड़ने की अनुमति नहीं होने की स्थिति में डेटाबेस को छोड़ने और बनाने के लिए इस विधि के कुछ फायदे हैं।


1
दूसरे उदाहरण की पुष्टि, भयानक। डाटाबेस साख अतिरिक्त झंडे के रूप में पहले जोड़े --silentऔर -v/ --verbose: क्रमशः की तरह--user=username --password=password --host=host.name
यहाँ

अच्छा विचार। लेकिन कुछ समस्या है जब FOREIGN KEY हो। मैं | sort -rरिवर्स लाइन में जोड़ता हूं , लेकिन फिर भी कुछ डीबी को संगत नहीं करता है।
फैंसीजॉन्ग

2

mysql -u USERHERE -pPASSWORDHERE --silent --skip-column-names -e "SHOW TABLES" DATABASENAMEHERE | xargs -L1 -I% echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE%;' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE


2
सुपर उपयोगकर्ता में आपका स्वागत है! हालांकि यह प्रश्न का उत्तर दे सकता है, यह एक बेहतर उत्तर होगा यदि आप समझा सकते हैं कि ऐसा क्यों होता है। हम व्यापक, उच्च गुणवत्ता वाले उत्तर की तलाश कर रहे हैं जो कुछ स्पष्टीकरण और संदर्भ प्रदान करते हैं। केवल एक-पंक्ति का उत्तर न दें; समझाएं कि आपका उत्तर सही क्यों है, आदर्श रूप से उद्धरणों के साथ। स्पष्टीकरण शामिल नहीं करने वाले उत्तरों को हटाया जा सकता है। इसके अलावा, अपने स्वरूपण की जाँच करें।
जी-मैन का कहना है कि 'मोनिका'

सेट टेबल के बाद विदेशी_की_चेक = 1 को न भूलें: देखें stackoverflow.com/a/2873991/4306855 mysql -u USERHERE -pPASSWORDHERE --silent -skip-column-names -e "SHAT TABLES" DATABASENAME | xargs -L1 -I% इको 'SET FOREIGN_KEY_CHECKS = 0; ड्रॉप टेबल%; SET FOREIGN_KEY_CHECKS = 1; ' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE
toto21
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.