Mysql-------错误总结:Can't write; duplicate key in table

一.先设主键自增再设外键

今天修改数据库表(运用sqlyog),发现主键没有自增,想要添加自增,报错,查看很多博客,尝试后得出结论:Mysql只能先设置主键自增再设置外键,否则报错。原因是此主键是另一个表的外键,而外键是不可以设置自增的,所以想要设置自增,必须先将外键删除。
参考博客:https://blog.csdn.net/qq_39688282/article/details/100900963

二.Can’t write; duplicate key in table总结

经过上述操作,有些表已经修改成功,直到遇到下面这张表:
在这里插入图片描述
设置外键后,发现报错,如下图:
在这里插入图片描述
错误信息说道表中键重复,又查询大量博客,基本上说的都是外键名重复,经过实验发现不对,如下图:
在这里插入图片描述
在这里插入图片描述
两表中外键正确,名称却是相同的。

这问题卡了很久,最后发现是约束名的问题,如下图:在这里插入图片描述
从图中可以看出,两个外键的约束名相同了,经过修改,成功,如下图:
在这里插入图片描述
接着运用此方法设置外键,发现如下错误:
在这里插入图片描述
观察上一张成功的表发现约束名重名了,如下图:
在这里插入图片描述
修改之后,成功,如下图:
在这里插入图片描述
经过修改,如下两张图:
在这里插入图片描述
在这里插入图片描述
发现不同的外键,约束名也不能相同。

结论:

(1)同一个表中,约束名不能相同。
(2)不同的表中约束名也不能相同(不管外键名相不相同)。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值