sql - 错误 1022:无法写入;表 '#sql-209c_8' SQL 语句中的重复键:
问题描述
为什么我不能添加两个外键?
执行:
ALTER TABLE `adv`.`book`
ADD CONSTRAINT `BRANCH_ID`
FOREIGN KEY (`BRANCH_ID`)
REFERENCES `adv`.`branch` (`BRANCH_ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Operation failed: There was an error while applying the SQL script to the database.
ERROR 1022: Can't write; duplicate key in table '#sql-209c_8'
SQL Statement:
ALTER TABLE `adv`.`book`
ADD CONSTRAINT `BRANCH_ID`
FOREIGN KEY (`BRANCH_ID`)
REFERENCES `adv`.`branch` (`BRANCH_ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
解决方案
您似乎正在使用 MySQL。
从错误消息来看,很可能已经存在另一个具有相同名称的约束(即BRANCH_ID
)。这是不允许的。
要解决此问题,您可以简单地为您尝试创建的约束指定一个不同的名称。
您可以查询目录视图INFORMATION_SCHEMA.KEY_COLUMN_USAGE
以找出哪些表使用相同的约束名称。
SELECT table_schema, table_name, column_name
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE constraint_name = 'BRANCH_ID';
推荐阅读
- shopify - 如何在产品页面中使用 Shopify 应用代理?
- c# - explorer.exe 如何出现在表单的顶部?
- swift - UICollectionViewDelegateFlowLayout 没有改变单元格边界
- c# - 为什么不直接使用 DateTime.Now?
- wso2 - 有没有办法更改可用于 JWT 授权的令牌端点的默认端口 (9443)?
- scala - 幻影:创建自定义索引和查询?
- javascript - Javascript在图像画布上围绕形状绘制边框
- bash - -bash:unalias:emacs:未找到
- laravel - 如何将 Laravel QueryBuilder 中的子查询链接到外部表
- vba - VBA 错误处理程序:On Error Resume 在处理程序中不起作用