mysql 1005错误_Navicat 在添加mysql表的外键时报错1005,error150

前言:hello 大家好

我们又见面了

今天给大家分享一下Navicat 在添加mysql表的外键时报错1005 的情况。

可能没多大用 但还是简单的记录一下。

话不多说 直接开整说到外键这个东西真的是让人又爱又恨 怎么说呢

爱是因为它可以优化数据检索速度,为开发人员省下了不少工作 恨是因为它的关联性 和维护起来有点麻烦

但是无奈 还是得用到它。

MySQL 表外键

外键是一个在关联式表中符合另一个表主键的栏位。外键可以用作交叉参考表。

在表设计器的 外键 选项卡管理表外键。只需简单地点击或双击一个外键栏位来编辑。右击来显示弹出菜单或使用外键工具栏,能让你创建新的、编辑或删除选择的外键栏位。

注意:MySQL 3.23.44 或以上版本支持外键。

添加外键

添加一个外键

在表设计器中打开表。

打开 外键 选项卡。

右击并在弹出菜单中选择 添加外键 或在工具栏点击 添加外键。

编辑外键属性。

注意:两个表必须是 InnoDB 类型(或如果你有 solidDB 类型 solidDB for MySQL)。在参考表中,必须有一个索引,在外键列以相同排序编入第一列。由 MySQL 4.1.2 开始,如果该索引不存在,它将会在参考表中自动创建。

编辑外键

编辑一个外键

在表设计器中打开表。

打开 外键 选项卡。

只需点击或双击外键来编辑。

注意:MySQL 4.0.13 或以上版本支持。

删除外键

删除一个外键

在表设计器中打开表。

打开 外键 选项卡。

在要删除的外键上右击并在弹出菜单中选择 删除外键 或在工具栏点击 删除外键。

在对话窗口确认删除。

注意:MySQL 4.0.13 或以上版本支持。

Error 1005: can not create table(Error150)

首先确保自己的表为innoDB类型,若不是,可以更新表的引擎

alter table work engine =innodb;

然后可以查看表(这里work为表名)的结构

show create table work;

若Navicat依然报错,建议用命令行添加外键约束

alter table 表A add constraint 外键名 foreign key (person_no) references 表C(person_no) ON UPDATE CASCADE ON DELETE CASCADE

ON DELETE

restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。

no action:意思同restrict.即如果存在从数据,不允许删除主数据。

cascade(级联):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。

set null:当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)

ON UPDATE

restrict(约束):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。

no action:意思同restrict.

cascade(级联):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。

set null:当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。

注:NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。

到这就结束了 感兴趣的小伙伴可以参考下面这个链接

原文链接:

https://blog.csdn.net/SXT_fighting/article/details/76231985

每日一笑,今天你笑了吗?

1.某程序员夫妇新婚,

一年之后喜得贵子,取名"灵灵"

过一年后又喜得一女,取名"灵伊"

两年之后得子"伊灵"

两年之后,夫妇商定为得圆满再生一子,取名"伊伊"

不料产科发现所怀为双胞胎,夫欲减胎,妻不允,冥思许久,对夫曰:"老五就叫'忆初'吧…"

2.程序员的读书历程:

x语言入门 —> x语言应用实践 —> x语言高阶编程 —> x语言的科学与艺术 —>编程之美 —>编程之道 —>编程之禅—>颈椎病康复指南。

0b167fb404f07ba577e5584397c11c6b.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值