Maison  >  Article  >  base de données  >  Que faire avec l'erreur MySQL 1022

Que faire avec l'erreur MySQL 1022

藏色散人
藏色散人original
2023-02-16 09:43:172315parcourir

L'erreur mysql 1022 est causée par des noms de clés étrangères en double. La solution est la suivante : 1. Utilisez la commande "select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE Where CONSTRAINT_NAME='..." pour trouver les noms de clés étrangères en double ; nom de la clé. Nommez-le simplement.

Que faire avec l'erreur MySQL 1022

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

Que faire si erreur mysql 1022 ?

Erreur mysql Code d'erreur : 1022. Impossible d'écrire ; clé en double dans la table `xxx`

Explication : Cette erreur est un nom de clé étrangère en double

Recherchez le nom de clé étrangère en double, là où il est utilisé, le sql est le suivant :

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where CONSTRAINT_NAME='重复的外键名称'

S'il n'y a pas de problème, renommez-le simplement.

Extensions associées :

1 Définition de clé étrangère

Une clé étrangère est une colonne d'une table qui est incluse dans la clé primaire d'une autre table.

La clé étrangère est également un type d'index, qui associe deux tables en pointant une colonne d'une table vers la clé primaire d'une autre table.

Une table peut avoir une clé étrangère, ou il peut y avoir plusieurs clés étrangères associées à plusieurs tables.

2 Le rôle des clés étrangères

Le rôle principal des clés étrangères est d'assurer la cohérence et l'intégrité des données et de réduire la redondance des données.

Cela se reflète principalement dans les deux aspects suivants :

  • empêche l'exécution

l'insertion d'une nouvelle ligne de la table, et sa valeur de clé étrangère n'est pas la valeur de clé primaire de la table principale, ce qui empêche l'insertion.

Modifiez la valeur de la clé étrangère de la table. Si la nouvelle valeur n'est pas la valeur de la clé primaire de la table principale, la modification sera bloquée.

Si une ligne est supprimée de la table maître, sa valeur de clé primaire empêchera la suppression si elle existe dans la table esclave (si vous souhaitez la supprimer, vous devez d'abord supprimer les lignes concernées de la table esclave).

La table primaire modifie la valeur de la clé primaire. Si l'ancienne valeur existe dans la table esclave, la modification est bloquée (si vous souhaitez la modifier, vous devez d'abord supprimer les lignes concernées dans la table esclave).

  • Exécution en cascade

Supprimez les lignes de la table principale et supprimez ensemble les lignes associées de la table esclave.

Modifiez la valeur de clé primaire de la table principale et modifiez ensemble la valeur de clé étrangère des lignes associées dans la table esclave.

3 Restrictions de création de clé étrangère

La table parent doit déjà exister dans la base de données, ou être la table en cours de création.

Si c'est ce dernier cas, la table parent et la table enfant sont la même table. Une telle table est appelée table autoréférentielle, et cette structure est appelée intégrité autoréférentielle.

La clé primaire doit être définie pour la table parent.

Le nombre de colonnes dans la clé étrangère doit être le même que le nombre de colonnes dans la clé primaire de la table parent.

Les deux tables doivent être des tables InnoDB. Les tables MyISAM ne prennent actuellement pas en charge les clés étrangères.

Les colonnes de clé étrangère doivent être indexées. MySQL 4.1.2 et les versions ultérieures créeront automatiquement un index lors de l'établissement d'une clé étrangère, mais dans les versions antérieures, vous devez le créer explicitement.

Les colonnes des deux tables dans la relation de clé étrangère doivent avoir des types de données similaires, c'est-à-dire des colonnes qui peuvent être converties entre elles. Par exemple, int et tinyint peuvent être utilisés, mais int et char ne le peuvent pas.

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