关于mysql外键的几个报错及解决

错误代码: [HY000][1215] 

原因:本表中要创建外键的列,和主表中的目标列类型不匹配(如int和 int unsigned)
解决:改一样就行

错误代码: [HY000][1822]      ……Failed to add the foreign key constraint.…… Missing index for constraint

原因:主表的目标列不是唯一属性的
比如我遇到的这个是用户表1——股票分组表2——分组中的股票表3:表2的uid用表1的做外键主键,表3的gid用表2的gid做外键,而表二的gid属性由于不是主键,忘了加unique——注意一点(至少是在mysql里),外键的目标列必须是那张表里的一个唯一属性列:主键自然可以,但不一定要是主键
解决:确保主表中的目标列是唯一的
(另外:感觉我这仨表的模式好像不太好,有无大佬教教)

后续再遇到相关的问题再更新

补一个

ERROR 1060 (42S21): Duplicate column name

原因:很简单,重复的列名——但是要记一下的原因是:如果用idea专业版(2022.1.4)里面的数据库功能修改的话,有可能是你第一次的修改中,一部分alert语句正常执行了(比如加入了一列xxid),在中途的某一个寄了,然后idea给出了一个其他报错信息。
此时前面的修改没有被回滚,之后你改对了中途的那条语句再执行,就会提示xxid出现这个报错——看着没重复啊它怎么提醒我重复列。
解决:关了修改窗口刷新一下就看到了(为什么数据库修改的窗口跟设置窗口一眼打开了就不能点外面啊 不知道idea之后或者之前的版本有没有这个问题)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值