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

ERROR 1215 (HY000): Cannot add foreign key constraint

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

本来是要建两张表:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

create table department(

id int,

name varchar(20)

);

create table employee(

id int primary key auto_increment,

name varchar(20),

sex enum(‘male‘,‘female‘not null default ‘male‘,

age int,

dep_id int,

foreign key(dep_id) references department(id)

);

出现下面的提示:

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

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

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

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

然后加上了 primary key


1

2

3

4

create table department(

id int primary key,

name varchar(20)

);

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

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

如果找到原因再更新!

更新:

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

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

看看对unique的测试:

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

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

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

选择某列为unique index即可。

至于外键的建立如下:

双击表与表之间的连接线

原文地址:https://www.cnblogs.com/liushui-sky/p/8830936.html

时间: 2024-08-02 02:15:48

mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决的相关文章

Mysql使用Navicat建立外键时报错cannot add foreign key constraint分析

Mysql使用Navicat建立外键时报错cannot add foreign key constraint分析 1)要关联的字段类型或长度不一致. 2)两个要关联的表编码不一样. 3)某个表已经有记录了. 4)将"删除时"和"更新时"都设置相同,如都设置成CASCADE. 原文地址:https://www.cnblogs.com/neymargoal/p/10072347.html

mysql8.0数据库执行语句报1215-Cannot add foreign key constraint

原创公众号:路人甲Java     一位工作十年的前阿里P7大佬. 一.这个问题始终没整明白根本原因,只是换了个库再次执行可以成功. 1.在虚拟机中安装好linux系统后,想着装个mysql服务器吧,安装好之后就可以使用navicat进行连接操作了[具体搭建步骤后续更新]. 2.建好了也可以连接成功并创建了数据库,其他几张关联表也都执行成功,唯独在执行创建employees表的时候,界面报1215-Cannot add foreign key constraint,如下图: 3.经查阅资料,我做

MySQL设置外键报错 #1452 - Cannot add or update a child row: a foreign key constraint fails 解决方法

MySQL数据库,当我尝试在A表中设置B表的主键为外键时,报出错误:#1452 - Cannot add or update a child row: a foreign key constraint fails  于是去搜索了一下 "#1452 - Cannot add or update a child row: a foreign key constraint fails" 的含义与解决方法,根据这篇博文去排查了报错原因,排除了可能1和可能2,然后去研究可能3的具体含义,一开始并

Mysql之1451 - Cannot delete or update a parent row: a foreign key constraint fails...解决办法记录

今天使用delete语句删除一张表中的一条信息时,提示了这么一个错误:1451 - Cannot delete or update a parent row: a foreign key constraint fails...错误代码为1451 在这里参考了一位园友的解决方案mysql删除外链解决办法,如下: 关闭外键约束 SET FOREIGN_KEY_CHECKS=0; 语句执行 DELETE FROM blog_blog WHERE blog_blog.id=91; 删除完成后,重新开启外

Navicat For MySQL--外键建立与cannot add foreign key constraint分析

参考资料:https://blog.csdn.net/ytm15732625529/article/details/53729155 外键理解:https://www.cnblogs.com/bhlsheji/p/5332910.html 填个坑,回来写总结 原文地址:https://www.cnblogs.com/liaoguanwang/p/9678568.html

命令行插入含有中文的sql文件,报错ERROR 1366 (HY000): Incorrect stringvalue:

--以下是插入语句: insert into sms_inbox values('123456','123456', 'cd', sysdate(), '今天天 气很好', 1, sysdate(), '123456'); --报错: ERROR 1366 (HY000): Incorrect stringvalue: '\xBD\xF1\xCC\xEC\xCC\xEC...' for co lumn 'MESSAGECONTENT' at row 1 --解决:设置编码 set names g

MySQL ERROR 1215 (HY000)的一个情况

create table pcourse(cno char(9),cpno char(9), primary key(cno,cpno), foreign key(cno) references course(cno), foreign key(cpno) references course(cno));ERROR 1215 (HY000): Cannot add foreign key constraint 西电数据库上机作业.这个外键就是添不上去.之前student和course因为有中文数

mysql进阶 十一 外键在数据库中的作用

MySQL外键在数据库中的作用 MySQL外键的目的是控制存储在外键表中的数据,使两张表形成关联,是MySQL数据库中非常重要的组成部分,值得我们去深入了解.那么,MySQL外键究竟起到哪些作用呢?下文就将带您一探其中的秘密. MySQL外键的作用 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据.使两张表形成关联,外键只能引用外表中列的值! 例1 a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后,你只能在确定b 表中没有客户x的订单后,才可以在a表中删

mysql怎么定义外键

数据库mysql 建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键). 外键作用: 使两张表形成关联,外键只能引用外表中的列的值! 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键表名>(外键列名) 事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action