Maison  >  Article  >  base de données  >  Voici quelques options de titre, chacune mettant l’accent sur un aspect différent de l’article : Court et général : * Pourquoi ne puis-je pas ajouter une contrainte de clé étrangère dans MySQL ? * Dépannage de la contrainte de clé étrangère E

Voici quelques options de titre, chacune mettant l’accent sur un aspect différent de l’article : Court et général : * Pourquoi ne puis-je pas ajouter une contrainte de clé étrangère dans MySQL ? * Dépannage de la contrainte de clé étrangère E

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 16:57:03881parcourir

Here are a few title options, each emphasizing a different aspect of the article:

Short and General:

* Why Can't I Add a Foreign Key Constraint in MySQL? 
* Troubleshooting Foreign Key Constraint Errors in MySQL

More Specific:

* MySQL Foreign Key Con

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 :

  • Vérifier le statut d'InnoDB : Pour pour obtenir des détails d'erreur plus spécifiques, exécutez SHOW ENGINE INNODB STATUS ;.
  • Désactiver les vérifications de clé étrangère : Désactiver temporairement les vérifications de clé étrangère à l'aide de SET FOREIGN_KEY_CHECKS=0 ; permet la création de la table, mais l'insertion des données peut toujours échouer si les contraintes de clé étrangère ne sont pas respectées.
  • Utilisez ON DELETE CASCADE / ON UPDATE CASCADE : Avec ces options, les lignes associées dans la table enfant est automatiquement supprimée ou mise à jour lorsque le champ référencé dans la table parent est modifié.

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!

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