忘掉过去式

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

电脑版发表于:2020/4/28 17:33
前言: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语言的科学与艺术 —>编程之美 —>编程之道 —>编程之禅—>颈椎病康复指南。



关于TNBLOG
TNBLOG,技术分享
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢