Erreur de contrainte de clé étrangère dans MySQL : causes profondes et solutions
L'erreur « ERREUR 1215 (HY000) : impossible d'ajouter une contrainte de clé étrangère » se produit lors de la définition d'une référence de clé étrangère entre deux tables dans MySQL. Pour résoudre ce problème, il est crucial de s'assurer que des critères spécifiques sont remplis à la fois pour le champ référencé et le champ de clé étrangère :
Compatibilité du moteur :
Les deux champs doivent résider dans des tables avec le même moteur, généralement InnoDB.
Type et longueur des données :
Les types de données et les longueurs des champs doivent être identiques. Par exemple, si le champ référencé est un VARCHAR(20), le champ de clé étrangère doit également être VARCHAR(20).
Collation :
Le classement des champs doit correspondre ainsi, par exemple, utf8.
Unicité :
Le champ référencé dans la table parent doit être unique ou déclaré comme PRIMARY KEY pour garantir que chaque ligne de la table enfant a une référence valide.
Contraintes NULL :
Si le champ de clé étrangère autorise les valeurs NULL, le champ référencé doit également autoriser les valeurs NULL.
Exclusif Exécution :
Certains scénarios peuvent nécessiter l'exécution exclusive de l'instruction de création de clé étrangère sans aucune autre requête simultanée. Ceci peut être réalisé en démarrant une transaction, par exemple :
<code class="sql">BEGIN; CREATE TABLE course ( ... ); COMMIT;</code>
Mesures supplémentaires :
N'oubliez pas qu'il est essentiel de vérifier que toutes ces conditions sont remplies pour garantir une création réussie de contrainte 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!