不能写;创建表时出现重复键
由于主键条目重复而尝试创建新表时遇到错误 1022。即使在检查了查询之后,您也可能很难识别重复的来源。让我们进一步研究一下。
您提供的查询包含一个名为“iduser”的约束作为“userId”列的外键。此外,它还为“circleId”列指定名为“idcategory”的约束。这些约束名称似乎是问题的根源。
约束和重复
MySQL 中的约束在整个数据库中必须是唯一的,而不仅仅是针对特定表正在创建或修改。因此,您的数据库中可能已经有其他使用“iduser”或“idcategory”约束名称的表或索引。此冲突会导致重复键错误。
识别重复约束
要确定当前使用这些约束的位置,请执行以下查询:
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
此查询将显示“iduser”和“idcategory”约束所在的表和模式
解决方案
要解决该错误,您需要重命名重复的约束。考虑使用特定于当前表的唯一名称,例如“userId”列上的外键约束的“fk_user”。重命名约束并更新查询后,您应该能够成功创建表,而无需重复密钥错误。
以上是为什么创建表时出现 MySQL 错误 1022(重复键)?的详细内容。更多信息请关注PHP中文网其他相关文章!