Maison >base de données >tutoriel mysql >Pourquoi MySQL génère-t-il une erreur « La contrainte de clé étrangère est mal formée » ?

Pourquoi MySQL génère-t-il une erreur « La contrainte de clé étrangère est mal formée » ?

DDD
DDDoriginal
2025-01-19 05:55:10323parcourir

Why Does MySQL Throw a

Dépannage des erreurs de contrainte de clé étrangère de MySQL

La création d'une relation de clé étrangère dans MySQL nécessite une attention particulière à la compatibilité des types de données. Des types de données ou des longueurs incompatibles entre la colonne de clé étrangère et la colonne de clé primaire référencée entraîneront une erreur « La contrainte de clé étrangère est mal formée ».

Voici un scénario courant :

  • Table1 : Contient une colonne ID (clé primaire) avec un type de données CHAR.
  • Tableau2 : Contient une colonne IDFromTable1 faisant référence à la colonne ID du Tableau1.

Tentative de création de la contrainte de clé étrangère à l'aide de cette requête :

<code class="language-sql">ALTER TABLE `table2`  
ADD CONSTRAINT `FK1` 
FOREIGN KEY (`IDFromTable1`) REFERENCES `table1` (`ID`) 
ON UPDATE CASCADE 
ON DELETE CASCADE;</code>

échouera si IDFromTable1 et ID ont des types ou des longueurs de données différents. Par exemple, si IDFromTable1 est VARCHAR(50) et ID est CHAR(10), la contrainte ne sera pas créée.

Solution :

La solution est simple : assurez-vous que la colonne de clé étrangère et la colonne référencée partagent exactement le même type de données et la même longueur. Ajuster les définitions de colonnes pour qu'elles correspondent résoudra l'erreur et permettra d'établir avec succès la relation de clé étrangère.

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