Maison  >  Article  >  base de données  >  Pourquoi MySQL ne me permet-il pas de supprimer les clés étrangères ?

Pourquoi MySQL ne me permet-il pas de supprimer les clés étrangères ?

藏色散人
藏色散人original
2019-04-28 15:39:323292parcourir

MySQL n'autorise pas la suppression des clés étrangères car après la création d'une clé étrangère, un index du même nom sera automatiquement créé lors de la suppression de la clé étrangère, si l'index du même nom n'est pas supprimé, MySQL. pensera que la clé étrangère existe toujours, alors mysql continuera à afficher les clés étrangères dans la commande show keys.

Pourquoi MySQL ne me permet-il pas de supprimer les clés étrangères ?

Parfois, nous ne pouvons pas supprimer les clés étrangères MySQL, que devons-nous faire ? Ci-dessous, je vais vous présenter pourquoi MySQL n'autorise pas la suppression des clés étrangères et la solution. J'espère qu'elle sera utile aux amis dans le besoin !

1. Une fois que MYSQL a créé une clé étrangère, il créera automatiquement un index du même nom

2 lors de la suppression de la clé étrangère, si l'index du même nom n'a pas été supprimé. , MYSQL considère que la clé étrangère existe toujours --- MYSQL continuera à afficher les clés étrangères dans la commande show keys Lorsque vous supprimez la table, MYSQL continuera à vous demander "une contrainte de clé étrangère échoue", c'est-à-dire la clé étrangère. la contrainte échoue

3. Naturellement, lorsque vous souhaitez supprimer à nouveau la clé étrangère que vous voyez dans show key, une erreur 1025 sera signalée. C'est en effet comme dit sur Internet, le nom de la clé étrangère est erroné, car en fait la clé étrangère n'existe plus. Mais malheureusement, peu importe Vous pouvez voir que les clés étrangères existent toujours via show key ou d'autres opérations de table, ce qui induit vos yeux en erreur

Solution :

1. Supprimez d'abord l'index

mysql> show index from tableName;
mysql> alter table tableName drop index FKxxxxxxxxxxxxxx;

2. Supprimez à nouveau la clé étrangère

mysql> show keys from tableName;
mysql> alter table tableName drop foreign key FKxxxxxxxxxxxxxx;

Si cela ne fonctionne pas, vous pouvez d'abord essayer de supprimer la clé étrangère, puis de supprimer l'index ou de vous reconnecter. à la base de données.

Recommandations associées : "Tutoriel MySQL"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn