Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens le code d'erreur MySQL 1005 : impossible de créer une table ?

Pourquoi est-ce que j'obtiens le code d'erreur MySQL 1005 : impossible de créer une table ?

DDD
DDDoriginal
2024-12-18 15:03:15438parcourir

Why Am I Getting MySQL Error Code 1005: Can't Create Table?

Code d'erreur : 1005. Impossible de créer une table : une analyse détaillée

Lorsque vous rencontrez le code d'erreur 1005 lors de la création d'une clé étrangère avec le script suivant :

ALTER TABLE sira_no
    ADD CONSTRAINT METAL_KODU FOREIGN KEY(METAL_KODU)
    REFERENCES metal_kod(METAL_KODU)
    ON DELETE SET NULL
    ON UPDATE SET NULL ;

Il est essentiel de comprendre les raisons sous-jacentes derrière cela erreur.

Le message d'erreur « Impossible de créer la table 'ebs.#sql-f48_1a3' (errno : 150) » indique généralement qu'il y a un problème avec la référence de clé primaire. Pour résoudre ce problème, il est crucial de s'assurer que :

  • Les types et tailles de données des champs clés sont identiques :
    Assurez-vous que les types et les tailles correspondent exactement. Par exemple, INT(10) et BIGINT sont incompatibles. De même, les champs SIGNÉ et NON SIGNÉ doivent correspondre en conséquence.
  • Les champs pertinents ont des index appropriés :
    Les relations de clé étrangère nécessitent un index ou une clé primaire sur le champ référencé. Si le champ référencé ne dispose pas d'index, créez-en un pour établir la contrainte.
  • Le nom de clé étrangère est unique :
    Les noms de clé étrangère en double peuvent entraîner des erreurs. Vérifiez que le nom de la clé étrangère est unique dans la base de données en ajoutant des caractères aléatoires à sa fin.
  • Les tables sont de type InnoDB :
    Les contraintes de clé étrangère exigent que les deux tables impliquées soient InnoDB tableaux. Les tables MyISAM ne peuvent pas prendre en charge les clés étrangères.
  • Les options en cascade et la nullabilité des champs sont compatibles :
    Si les actions ON DELETE ou ON UPDATE sont définies sur CASCADE, le champ référencé ne peut pas avoir de NOT Contrainte NULL.
  • Les options Charset et Collation sont cohérent :
    Assurez-vous que les paramètres Charset et Collation sont identiques pour la table et les colonnes clés de la relation.
  • Les valeurs par défaut sur les colonnes de clé étrangère ne sont pas présentes :
    Les colonnes de clé étrangère ne doivent pas avoir de valeurs par défaut définies.
  • Les clés composites avec des index séparés sont obligatoire :
    Si le champ de référencement fait partie d'une clé composite, il doit avoir son propre index, distinct de l'index composite.

Vérifier minutieusement les causes répertoriées et corriger toute divergence devrait résoudre le code d'erreur 1005. Pour plus de détails, consultez la documentation de MySQL sur l'erreur numéro 1005 : impossible de créer une table.

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