J'ai besoin de supprimer toutes les tables d'une base de données sans connaître au préalable leurs noms. La procédure typique consiste à supprimer puis à recréer la base de données, mais ce n'est pas une option. Quelle est la meilleure façon de procéder?
12
Réponses:
Il existe une ligne simple bash utilisant mysqldump (du Thingy Ma Jig Blog ).
Si vous obtenez cette erreur:
Essayez ce qui suit:
Maintenant, il ignore les contraintes.
la source
Vous devez utiliser les tables information_schema pour extraire les métadonnées de la base de données, puis supprimer les tables qui y sont répertoriées.
la source
Vous pouvez également essayer un script shell rapide pour le faire:
Supprimer
echo
après avoir vérifié qu'il fera ce que vous attendez.la source
$''
bash pour interpréter les séquences avec barre oblique inverse au lieu de les prendre littéralement.'\n'
contiendrait exactement \ n, juste comme ça, qui$IFS
comprendrait la division en \ et n caractères.$'\n'
contiendrait un caractère de nouvelle ligne, 0x0D. Jetez un œil ici pour plus d'informations: gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting .Il y a eu récemment une entrée sur le blog Xaprb qui couvre bien cela.
Il comprend pourquoi l'utilisation
INFORMATION_SCHEMA
n'est pas toujours une bonne chose et fait référence à un outil de ces charmantes personnes chez Maatkit .Essayez ce qui suit avec
mk-find
:Si vous êtes satisfait des résultats, alors:
la source
Si vous avez accès au système de fichiers, alors juste
rm -rf databasename/*
:).L'instruction Drop database fait de même ... Extrait du manuel MySQL:
L'instruction DROP DATABASE supprime du répertoire de base de données donné les fichiers et répertoires que MySQL lui-même peut créer pendant le fonctionnement normal:
la source