J'ai trouvé l'ensemble des déclarations générées utiles, et je recommande ces modifications :
-
Limitez les gouttes générées à votre base de données comme ceci :
SELECT concat('DROP TABLE IF EXISTS ', table_name, '
;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
Note 1 : Cette opération n'exécute pas les instructions DROP, elle vous en donne simplement la liste. Vous devrez couper et coller la sortie dans votre moteur SQL pour les exécuter.
Note 2 : Si vous avez des VIEWs, vous devrez corriger chaque DROP TABLE `VIEW_NAME`
déclaration à DROP VIEW `VIEW_NAME`
manuellement.
- Note, par http://dev.mysql.com/doc/refman/5.5/en/drop-table.html l'abandon avec la cascade est inutile / trompeur :
"RESTRICT et CASCADE sont autorisés pour faciliter le portage. Dans MySQL 5.5, ils ne font rien."
Par conséquent, pour que les déclarations de chute fonctionnent si vous en avez besoin :
SET FOREIGN_KEY_CHECKS = 0
Cela désactivera les vérifications de l'intégrité référentielle - ainsi, lorsque vous aurez terminé d'effectuer les abandons dont vous avez besoin, vous voudrez réinitialiser la vérification des clés avec
SET FOREIGN_KEY_CHECKS = 1
-
L'exécution finale devrait ressembler à ceci :
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;
NB : pour utiliser plus facilement la sortie de SELECT, l'option mysql -B peut aider.
8 votes
À moins que vous n'ayez beaucoup d'autres entités, pourquoi ne pas simplement DROP DATABASE et repartir de zéro ?
218 votes
Pour préserver les privilèges des utilisateurs.
7 votes
Je viens de réaliser qu'entre-temps vous avez obtenu une réponse de Dion Truter qui est plus complète que la mienne et je vous suggère de l'accepter à la place. (le "drop tous la partie "tables" n'est pas couverte par la mienne)
6 votes
Pour info, si vous avez installé phpMyAdmin, il est facile de sélectionner toutes les tables et de les déposer.
1 votes
C'est vrai mais seulement pour phpMyAdmin dans la version 4.x. Si vous sélectionnez toutes les tables et choisissez
Drop
dans le menu déroulant, vous pouvez décocherForeign key check
la case à cocher.0 votes
Voir aussi : Comment supprimer toutes les tables MySQL à partir de la ligne de commande ? .
0 votes
@jmarceli Pour PMA avant la version 4 : Sélectionnez toutes les tables de PMA, choisissez DROP. Il y aura une liste des instructions DROP. Copiez-les. Ouvrez l'onglet d'exécution SQL de PMA. Collez d'abord
SET FOREIGN_KEY_CHECKS = 0
puis les déclarations de dépôt que vous avez copiées et dernierSET FOREIGN_KEY_CHECKS = 1
et courir ;-)0 votes
Les privilèges d'utilisateur ne sont pas supprimés dans MySQL (désormais ?) lorsqu'une base de données est supprimée, il est donc certainement plus facile et plus rapide de supprimer la base de données, tant que vous disposez des privilèges CREATE/DROP DB.