2010-02-03 5 views
15

Je ne veux pas laisser tomber la base de données,Comment supprimer toutes les tables dans MySQL?

parce que je ne suis pas le site d'hébergement sur ma propre machine,

baisse la base de données, il faudra le créer à nouveau, et de nombreux paramètres.

Existe-t-il une commande dans MySQL qui peut être utilisée pour supprimer toutes les tables d'une base de données spécifique?

EDIT

Tout ce que je peux faire est dans un phpMyAdmin

Répondre

5

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]

Here il y a plus de méthodes pour déposer toutes les tables sans laisser tomber la base de données.

+0

Comment utiliser votre script lorsque j'obtiens cette erreur: Impossible de supprimer ou de mettre à jour une ligne parente: une contrainte de clé étrangère échoue – user2298943

+0

@ user2298943 Utilisez ceci: 'mysqldump -u [USERNAME] -p [PASSWORD] - add-drop-table --no-data [Base de données] | grep -e '^ DROP \ | FOREIGN_KEY_CHECKS '| mysql -u [USERNAME] -p [PASSWORD] [DATABASE] ' – kiLLua

1

Je ne suis au courant de rien de direct pour répondre à vos besoins. Vous pouvez essayer de faire ce qui suit:

Exécutez cette option pour afficher votre commande drop:

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | 
grep ^DROP 


Nex vous pouvez le faire pour exécuter effectivement les commandes drop:

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | 
grep ^DROP | 
mysql -u[USERNAME] -p[PASSWORD] [DATABASE] 
3

Vous pouvez également générer un fichier sql à partir de la base de données information_schema:

Select concat('DROP TABLE database_name.', table_name,';') from information_schema.TABLES where table_schema='database_name'; 

Cela donnera une sortie comme:

DROP TABLE database_name.table1; 
DROP TABLE database_name.table2; 
[...] 
DROP TABLE database_name.tableN; 
27

Vous avez parlé de faire cela dans phpMyAdmin. J'ai juste eu à faire cela et je ne suis pas sûr de la version que vous utilisez, mais dans la version que j'ai si vous faites défiler vers le bas de la liste des tables, vous pouvez cliquer sur "Tout vérifier" puis dans le menu déroulant à côté de celui qui a "Avec sélectionnés:" vous pouvez sélectionner "Drop" et il vide toutes les tables.

+4

Voici la réponse réelle à cette question. –

+0

Cela fonctionne! Mais j'ai désactivé la clé étrangère pour supprimer toutes les tables! –

0
$q=mysql_query("SHOW TABLES FROM ".SQL_DATABASE_NAME); 

while($r=mysql_fetch_assoc($q)){ 
    mysql_query("DROP TABLE ".$r["Tables_in_".SQL_DATABASE_NAME]); 
} 

ça marche pour moi!

Questions connexes