mysql外键设置1215_mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决...

ERROR 1215 (HY000): Cannot add foreign key constraint

最近在建表时遇到了这个错误,然后找了下找到了解决办法,记录下:

本来是要建两张表:

出现下面的提示:

8f13dd4ac8c6b23a1f4938a46ed78e6e.png

然后开始上网查,有的说是用的引擎不同的原因,查看了下我的,两引擎一模一样,

又有的说一个是int ,因为加了auto_increment后,实际变成了int undesigned,既然变成了

int undesigned那我也设置成undesigned,再插入,错误依旧,

最后 我想到了上面的department表中的id,只是整形,可能不唯一,

然后加上了 primary key

再次试验,发现能正常创建表

41ecd01a1c3242c4bb00a7adf4704e3f.png

这里的具体原理是什么还没搞清楚,上面的也只是猜测,特此记录

如果找到原因再更新!

更新:

https://stackoverflow.com/questions/22013511/mysql-error-1215-hy000-cannot-add-foreign-key-constraint

a941300e17af54f0dfaae4ddaf91504b.png

也就是说我上面 的猜测是正确的!

看看对unique的测试:

1d9f392c5dec20027ca894965f3246c6.png

转自:http://www.cnblogs.com/Andy963/p/7634537.html

以上要注意的就是最后一点原因外键必须是另一个表的主键或者唯一键(即要不把那个列设为主键要不就建立一个唯一索引)

powerdesigner建立主键不再介绍,建立唯一索引的步骤如下

e990cad377d165616db7b0e2d2737d01.png

bde12a4708b9f43453fda663fc1ff549.png

e2e808752c3f05abdebb874f4ec92e0e.png

选择某列为unique index即可。

至于外键的建立如下:

双击表与表之间的连接线

c239935c471cd9b49d07b93fe89cc303.png

14131e5141b0a1b9791e294eb1d085e6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值