Maison >base de données >tutoriel mysql >Comment éviter les erreurs MySQL Errno 150 lors de l'utilisation de contraintes de clé étrangère ?

Comment éviter les erreurs MySQL Errno 150 lors de l'utilisation de contraintes de clé étrangère ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-21 19:37:16630parcourir

How to Avoid MySQL Errno 150 Errors When Using Foreign Key Constraints?

Contraintes des clés étrangères MySQL : éviter les erreurs Errno 150

Lors de la création d'une table dans MySQL avec des clés étrangères faisant référence à d'autres tables, vous pouvez rencontrer un numéro d'erreur : erreur 150. Pour résoudre ce problème, il est crucial de respecter les directives suivantes :

  1. Assurer l'ordre des tables : Définissez la table parent contenant la clé primaire avant de créer la table enfant avec la clé étrangère référence.
  2. Activer la prise en charge des clés étrangères : Les tables parent et enfant doivent prendre en charge les contraintes de clé étrangère, généralement en utilisant le stockage InnoDB. moteur.
  3. Clé de colonne la plus à gauche : Les colonnes référencées dans la table parent doivent être les colonnes les plus à gauche d'une clé, idéalement une CLÉ PRIMAIRE ou une CLÉ UNIQUE.
  4. Ordre des clés primaires correspondantes : La définition FK doit s'aligner sur la définition PK en termes d'ordre des colonnes et de données. types.
  5. Alignement approprié des données : Les colonnes PK de la table parent et les colonnes FK de la table enfant doivent correspondre en termes de type de données et de classement.
  6. Compatibilité des données existantes : Si la table enfant contient des données, assurez-vous que chaque valeur de colonne FK correspond à une valeur correspondante dans la table parent PK colonnes.
  7. Évitez les tables temporaires ou partitionnées : Les contraintes de clé étrangère ne peuvent pas être définies sur les tables TEMPORAIRES ou PARTITIONNÉES.
  8. Colonnes nullables : Si un ON DELETE SET NULL est utilisée, les colonnes FK doivent être nullable.
  9. Noms de contraintes uniques : Les contraintes de clé étrangère doivent avoir des noms uniques dans le schéma pour éviter les conflits.
  10. Clés étrangères dépendantes : Si un un FK mal formé existe dans une autre table faisant référence au même champ dans la table parent, assurez-vous de la cohérence avant de créer le nouveau FK. Utilisez la requête suivante pour identifier les FK problématiques :
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_SCHEMA = 'your_schema_name'
AND CONSTRAINT_NAME <> 'PRIMARY' AND REFERENCED_COLUMN_NAME IS NOT NULL;

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