Baisse vigueur mysql contourner la contrainte de clé étrangère
Je suis en train de supprimer toutes les tables d'une base de données, sauf un, et je finis par avoir l'erreur suivante:
Impossible de supprimer ou de mettre à jour un parent row: a foreign key constraint fails
Bien sûr, je pourrais d'essai et d'erreur pour voir ce que ces contraintes de clé sont et, éventuellement, de supprimer toutes les tables, mais je voudrais savoir si il existe un moyen rapide pour forcer l'abandon de toutes les tables (que je vais être en mesure de ré-insérer ceux que je ne veux pas supprimé).
Google visant à moi à un certain site qui a suggéré la méthode suivante:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
Réponse courte est qu'il n'a pas vraiment le truc depuis que j'ai fini par recevoir le même message d'erreur alors que j'étais en mesure de supprimer quelques autres tables. J'ai vu sur un Débordement de Pile façons d'obtenir toutes les clés étrangères lié à une certaine table, mais c'est beaucoup trop de temps à moins que je le script tous (ce qui est faisable dans le cas où il n'y a pas d'autre option)
De la base de données est de 4,1 donc je ne peux pas utiliser DROP DATABASE
Idées?
- Pourquoi avez-vous choisi la réponse choisie, qui n'est pas encore la solution à votre question?
Vous devez vous connecter pour publier un commentaire.
Puisque vous n'êtes pas intéressé à garder toutes les données, déposer l'ensemble de la base de données et en créer un nouveau.
Ce qui peut être utile à quelqu'un de se retrouver ici, à partir d'une recherche.
Assurez-vous que vous essayez de déposer un table et pas un vue.
SET foreign_key_checks = 0
est de définir des clés étrangères des contrôles sur off puisSET foreign_key_checks = 1
est de mettre de clé étrangère vérifie sur. Alors que les contrôles sont hors de l'tables peuvent être ignorés, les contrôles sont ensuite tourné le dos, pour garder l'intégrité de la structure de la table.Si vous utilisez phpmyadmin puis cette fonctionnalité est déjà là.
"Clé étrangère vérifier", décochez la case.
Vous pouvez utiliser les étapes suivantes, sa a fonctionné pour moi d'drop table avec contrainte,la solution a déjà été expliqué dans le commentaire ci-dessus, j'ai juste ajouté de la capture d'écran pour que -
Baisse de la base de données existe dans toutes les versions de MySQL. Mais si vous voulez garder la structure de la table, voici une idée
mysqldump --no-data --add-drop-base de données --add-drop-table -hHOSTNAME -uUSERNAME -p > de vidage.sql
C'est un programme, pas une commande mysql
Ensuite, se connecter à mysql et
source de vidage.sql;
Solution Simple pour la chute de la table à la fois à partir d'un terminal.
Cela a impliqué quelques pas à l'intérieur de votre shell mysql (pas un pas de solution tout de même), cela a fonctionné moi et m'a sauvé la journée.
Travaillé pour la version du Serveur: 5.6.38 MySQL Community Server (GPL)
Étapes que j'ai suivi:
MySQL shell