Comment tomber toutes les tables dans Windows de mysql, via une invite de commande ? La raison pour laquelle que je veux faire c’est que notre utilisateur a accès aux base de données des gouttes, mais pas d’accès à recréer la base de données elle-même, donc nous devons supprimer les tables manuellement. est-il possible de laisser tomber le tout à la fois ? Gardez à l’esprit que la plupart des tables est liée avec les clés étrangères donc ils auraient dû être abandonné dans l’ordre spécifique.
Réponses
Trop de publicités?@Devart version est correcte, mais le lièvre sont quelques améliorations pour éviter d'avoir d'erreur. J'ai édité le @Devart réponse, mais il n'a pas été acceptée.
SET FOREIGN_KEY_CHECKS = 0;
SET GROUP_CONCAT_MAX_LEN=32768;
SET @tables = NULL;
SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables
FROM information_schema.tables
WHERE table_schema = (SELECT DATABASE());
SELECT IFNULL(@tables,'dummy') INTO @tables;
SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;
Ce script ne soulèvera pas d'erreur avec un résultat NUL dans le cas où vous avez déjà supprimé toutes les tables dans la base de données par l'ajout d'au moins un inexistant - "factice" de la table.
Et il fixe, dans le cas où vous avez un grand nombre de tables.
Et Ce petit changement, de supprimer tous les afficher dans la Base de données
SET FOREIGN_KEY_CHECKS = 0;
SET GROUP_CONCAT_MAX_LEN=32768;
SET @views = NULL;
SELECT GROUP_CONCAT('`', TABLE_NAME, '`') INTO @views
FROM information_schema.views
WHERE table_schema = (SELECT DATABASE());
SELECT IFNULL(@views,'dummy') INTO @views;
SET @views = CONCAT('DROP VIEW IF EXISTS ', @views);
PREPARE stmt FROM @views;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;
Il suppose que vous exécutez le script à partir de la Base de données que vous souhaitez supprimer. Ou exécuter ce avant:
USE REPLACE_WITH_DATABASE_NAME_YOU_WANT_TO_DELETE;
- Merci à Steve Horvath pour découvrir le problème avec les backticks.