mysql新增外键时报错:1215 Cannot add foreign key constraint解决方法

新建两张表cityprovince

#USE db2;

#表city
CREATE TABLE city(cid INT PRIMARY KEY ,city_name VARCHAR(20),city_province VARCHAR(20))

ENGINE=INNODB DEFAULT CHARSET=utf8;

#表province
CREATE TABLE province(pid INT PRIMARY KEY ,province_name VARCHAR(20)) ENGINE=INNODB DEFAULT CHARSET=utf8;

 

#在表city中新增外键city_province_id_fk1
ALTER TABLE city ADD CONSTRAINT city_province_id_fk1 FOREIGN KEY(id) REFERENCES province(id);
#执行正常

#在表city中新增外键city_province_name_fk2
ALTER TABLE city ADD CONSTRAINT city_province_name_fk2 FOREIGN KEY(city_province) REFERENCES province(province_name);
#执行报错。错误代码: 1215 Cannot add foreign key constraint

#原因:在新增外键时,关联表(city)中的相关字段(city_province)必须为index

#解决方法:for_list表for_name字段新增索引
ALTER TABLE city ADD INDEX city_province_index(city_province);

#再次执行新增外键操作:
ALTER TABLE city  ADD CONSTRAINT city_province_fk2 FOREIGN KEY (city_province) REFERENCES province (province_name);

#执行成功

#添加外键注意事项:两字段的类型、约束、大小必须一致

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值