Je ne peux pas écrire ; Clé en double lors de la création d'une table
Vous rencontrez l'erreur 1022 lorsque vous tentez de créer une nouvelle table en raison d'entrées de clé primaire en double. Même après avoir examiné la requête, vous pourriez avoir des difficultés à identifier la source de la duplication. Examinons plus en détail.
La requête que vous avez fournie contient une contrainte nommée "iduser" comme clé étrangère pour la colonne "userId". De plus, il spécifie une contrainte nommée « idcategory » pour la colonne « circleId ». Ces noms de contraintes semblent être à l'origine du problème.
Contraintes et duplication
Les contraintes dans MySQL doivent être uniques dans l'ensemble de la base de données, pas seulement pour la table spécifique. en cours de création ou de modification. Par conséquent, il est possible que vous ayez déjà d'autres tables ou index dans votre base de données qui utilisent les noms de contrainte « iduser » ou « idcategory ». Ce conflit entraîne une erreur de clé en double.
Identification des contraintes en double
Pour déterminer où ces contraintes sont actuellement utilisées, exécutez la requête suivante :
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
Cette requête affichera les tables et schémas où se trouvent les contraintes "iduser" et "idcategory" référencé.
Solution
Pour résoudre l'erreur, vous devez renommer les contraintes en double. Pensez à utiliser des noms uniques spécifiques à la table actuelle, tels que « fk_user » pour la contrainte de clé étrangère sur la colonne « userId ». Une fois les contraintes renommées et la requête mise à jour, vous devriez pouvoir créer la table avec succès sans l'erreur de clé en double.
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!