Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens l'erreur MySQL 1005 (errno : 150) lors de la création d'une contrainte de clé étrangère ?

Pourquoi est-ce que j'obtiens l'erreur MySQL 1005 (errno : 150) lors de la création d'une contrainte de clé étrangère ?

Mary-Kate Olsen
Libérer: 2024-12-06 11:48:20
original
576 Les gens l'ont consulté

Why Am I Getting MySQL Error 1005 (errno: 150) When Creating a Foreign Key Constraint?

Code d'erreur : 1005. Impossible de créer la table... (errno : 150)

Dans votre tentative de créer une contrainte de clé étrangère entre les tables sira_no et metal_kod , vous avez rencontré le code d'erreur 1005, indiquant une incapacité à créer une table en raison d'un numéro d'erreur 150.

Cette erreur est due à une référence de clé primaire incorrecte dans votre code. Lors de la définition d'une relation de clé étrangère, le champ référencé dans la table parent doit exister, correspondre au type de données et à la taille du champ de clé étrangère et avoir un index ou être une clé primaire.

Étapes de dépannage :

  1. Vérifiez les définitions des champs : assurez-vous que les champs METAL_KODU dans les deux tables ont des types de données identiques et les tailles (par exemple, les deux doivent être VARCHAR(4), et non VARCHAR(5)), y compris les propriétés signées ou non signées. Vérifiez également la sensibilité à la casse.
  2. Créer un index : Vérifiez que le champ METAL_KODU référencé dans la table metal_kod a un index. Sans index, la contrainte de clé étrangère ne peut pas être établie.
  3. Vérifiez les types de tables : les deux tables impliquées dans la relation doivent utiliser le moteur de stockage InnoDB pour prendre en charge les contraintes de clé étrangère.
  4. Inspecter le nom de la clé étrangère : Assurez-vous que le nom de votre clé étrangère (METAL_KODU) ne duplique pas une clé existante key.
  5. Gérer les valeurs nulles : Si le champ METAL_KODU dans la table parent est défini sur NOT NULL et que vous avez spécifié ON DELETE SET NULL dans la contrainte de clé étrangère, modifiez soit la propriété de la colonne ou le comportement en cascade.
  6. Charset and Collation : Vérifiez que le jeu de caractères et les paramètres de classement correspondent pour les deux tables. et les colonnes clés.
  7. Supprimer les valeurs par défaut : Si votre colonne de clé étrangère a une valeur par défaut (par exemple, default=0), supprimez-la.
  8. Vérifiez les clés composites : si le champ METAL_KODU fait partie d'une clé composite dans la table parent, créez un index distinct pour ce champ afin de prendre en charge la clé étrangère contrainte.
  9. Review Syntax : Vérifiez votre instruction ALTER TABLE et assurez-vous que les noms de champs sont saisis correctement.
  10. Longueur de la clé étrangère : Assurez-vous que le nom de votre clé étrangère ne dépasse pas la longueur maximale de 64 caractères.

En adressant ces problèmes potentiels, vous pouvez résoudre le code d'erreur 1005 et établir avec succès la relation de clé étrangère entre les tables sira_no et metal_kod.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal