Maison  >  Article  >  base de données  >  Que faire si MySQL ne parvient pas à ajouter une clé étrangère

Que faire si MySQL ne parvient pas à ajouter une clé étrangère

藏色散人
藏色散人original
2023-02-16 10:15:573419parcourir

Solution à l'échec de MySQL lors de l'ajout de clés étrangères : 1. Vérifiez si les types ou les tailles des deux champs correspondent et modifiez-les 2. Créez un index pour le champ où la clé étrangère est définie ; 3. Vérifiez le type de moteur de ; la table et modifiez-la dans InnoDB Engine ; 4. Vérifiez si le nom de la clé étrangère est unique et modifiez-le 5. Modifiez la valeur de l'attribut en cascade ou définissez l'attribut de champ pour autoriser null, etc.

Que faire si MySQL ne parvient pas à ajouter une clé étrangère

L'environnement d'exploitation de ce tutoriel : système Windows 10, MySQL version 5.7, ordinateur Dell G3.

Que dois-je faire si MySQL ne parvient pas à ajouter une clé étrangère ?

Raisons d'échec de la création de clé étrangère MySQL

Tout d'abord, si des données ont été insérées dans plusieurs tables liées à la clé étrangère, cela peut entraîner l'échec de l'insertion de la clé étrangère

Lors de la création de clés étrangères dans MySQL, des problèmes sont souvent rencontrés. Si cela échoue, c'est parce qu'il y a de nombreux détails dans MySQL auxquels nous devons prêter attention. J'ai résumé et examiné les informations et répertorié les raisons courantes suivantes.

1. Les types ou tailles des deux champs ne correspondent pas strictement. Par exemple, s’il s’agit de int(10), alors la clé étrangère doit également être définie sur int(10), et non sur int(11), ni sur tinyint. De plus, vous devez également déterminer si l'un des deux champs est signé et l'autre non signé (c'est-à-dire : non signé). Les deux champs doivent correspondre strictement. Pour plus d'informations sur les champs signé et non signé, veuillez consulter : http://www. verysimple.com/blog/?p=57

2. Le champ essayant de définir une clé étrangère n'est pas indexé ou n'est pas une clé primaire. Si l'une d'elles n'est pas la clé primaire, vous devez d'abord créer un index pour celle-ci.

3. Une ou deux des tables sont des tables de moteur MyISAM. Si vous souhaitez utiliser des contraintes de clé étrangère, la table doit être du moteur InnoDB (en fait, si les deux tables sont du moteur MyISAM, cette erreur ne se produira pas du tout, mais la clé étrangère ne sera pas générée, seul l'index le sera être créé) Vous devez vérifier le type de moteur du tableau.

4. Les noms des clés étrangères ne peuvent pas être répétés. Vous devez vérifier votre base de données pour vous assurer que les noms de clé étrangère sont uniques, ou vous pouvez ajouter quelques caractères aléatoires après le nom de clé pour tester si c'est la cause.

5. Vous avez peut-être défini ON DELETE SET NULL, mais les champs clés associés sont définis sur des valeurs NOTS NULL. Vous pouvez résoudre le problème en modifiant la valeur de l'attribut cascade ou en définissant l'attribut field pour autoriser null.

6. Veuillez vous assurer que vos options Charset et Collate sont cohérentes au niveau de la table et au niveau du champ.

7. Vous avez peut-être défini une valeur par défaut pour la clé étrangère, telle que default=0.

8. Il y a une erreur de syntaxe dans l'instruction ALTER

Lorsqu'une erreur se produit, vérifiez soigneusement la conception des tables et des champs de la base de données. Je recommande également à chacun d'essayer d'utiliser des outils pour concevoir et créer des bases de données, ce qui peut réduire la probabilité d'erreurs.

Apprentissage recommandé : "Tutoriel vidéo MySQL"

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