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

Navicat 外键创建避坑指南:5类常见错误(如ERROR 1822/1005)根因与解决方案 本文详细解析了在Navicat中创建外键时常见的5类错误(如ERROR 1822/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)

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

alter table work engine =innodb;

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

show create table work;

2.若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的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。

Navicat 外键创建 5 大常见错误排查:从 ERROR 1822 到存储引擎不匹配 本文详细解析了使用Navicat创建外键时常见的5大错误,包括ERROR 1822索引缺失、存储引擎不匹配、数据类型不兼容、空值约束冲突以及循环依赖问题,并提供了具体的解决方案和SQL示例。特别针对外键为空的设置问题给出了专业指导,帮助开发者有效维护数据库完整性。 阅读详情

相关推荐

Navicat 外键创建报错排查:5种常见错误(如ERROR 1822/1005)原因与解决方案

然而,许多Navicat使用者在创建外键时都会遭遇各种报错——从常见的ERROR 1822(缺少索引)到ERROR 1005(无法创建外键约束),这些错误提示往往令人困惑。无论您是遇到字段类型不匹配、存储引擎问题,还是外键名冲突,都能在这里找到对应的解决方案。当您遇到类似"ERROR 1215: Cannot add foreign key constraint"的报错时,首先需要检查表的存储引擎。MySQL中只有InnoDB引擎支持外键约束,而MyISAM等引擎虽然允许创建外键定义,但实际不会生效。

weixin_42116058的博客 311

Navicat报错150

150错误的常见原因如下,并且我以可能性的大小作了排序 已知的原因: 1, 两个字段的类型或者大小不严格匹配,例如,如果一个是INT(10), 那么外键也必须设置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令来查看字段的大小,因为一些查询浏览器有时候把 int(10) 和int(11) 都显示为integer。另外,你还必须确定两个字段是否一个为 ...

Hyanl的博客 2743

使用Navicat V8.0创建数据库,外键出现错误ERROR 1005: Can't create table (errno: 121)

ERROR 1005: Can't create table (errno: 121) errno 121 means a duplicate key error. Probably the table already exists in the InnoDB internal data dictionary, though the .frm file for the table has b

为自己工作。。。。。 2021

在Navicat中导入SQL文件时出现错误[Err]1005 - Can't create table ,errno: 165 的解决方法

在Navicat中导入SQL文件时出现错误[Err]1005 - Can't create table ,errno: 165 的解决方法问题描述解决办法 问题描述 Navicat是数据库中比较常用的辅助工具,主要是用来连接数据库,将sql文件导入或者导出,同时比较直观地查询SQL文件,由于是第一次使用,和首次学习MySql,因此遇到在Navicat的使用中遇到一些问题。 在Navicat中如何...

qq_37823386的博客 6107

mysql处理添加外键时提示error 150 问题的解决方法

很多朋友们在做表设计时,处理添加外键时提示error 150 问题,都会遇到此文档中详细的记载了解决方案,希望可以帮到你!

Unity URP炫彩干涉效果:从薄膜干涉原理到Shader Graph实现

薄膜干涉是一种常见的光学现象,指光在透明薄膜上下表面反射后产生干涉,形成彩虹色条纹。其原理基于光程差导致的相长与相消干涉,不同波长的光被选择性增强或削弱。在计算机图形学中,这一物理现象被抽象为高效的数学模型,通过Shader编程实现动态色彩变化,为游戏和实时渲染带来独特的视觉表现力。技术实现上,常采用正弦函数结合噪声纹理来模拟色彩循环,利用法线与视角点积作为基础变量,加入噪声扰动模拟厚度不均,实现随视角变化的虹彩效果。在Unity URP渲染管线中,可通过Shader Graph可视化工具或手写HLSL代码

weixin_34026997的博客 294

nacicat for mysql/mysql 设置外键报错1005:Can't create table (errno: 150)解决办法

nacicat for mysql/mysql 设置外键报错1005:Can’t create table (errno: 150) 使用nacicat for mysql工具或者mysql 命令行中建立外键关联约束的时候会出现报错 : Can’t create table (errno: 150) 的错误信息结果是不能建立引用约束? 如图: 我的左边表car中的某个字段,想外键关联到右边cate...

空空说技术的博客 2376

ITIL-IT运维管理-概述

ITIL-IT运维管理-概述 概述 IT服务管理(ITSM)是一套帮助企业对IT系统的规划、研发、实施和运营进行有效管理的方法,是一套方法论。ITSM起源于ITIL(IT Infrastructure Library,IT基础架构标准库),ITIL是CCTA(英国国家电脑局)于1980年开发的一套IT服务管理标准库。它把英国在IT管理方面的方法归纳起来,变成规范,为企业的IT部门提供一套从计划、研发、实施到运维的标准方法。 中文名 IT服务管理 外文名 ITService Management 专家

syjhct的博客 4万+

navicat mysql设置外键报错150

自己设置数据的库的时候,外键老是出错150,发现有几个点需要注意 1、外键的引用类型不一样,如主键是int外键是char 2、找不到主表中引用的列 3、引用的字段和外键的字符编码不一致,也可能存储引擎不一样 4、引用的字段和外键的约束不同 但是!!!我的错误不是以上情况 我的问题点:外键设置了不能为空 这就很离谱,当我设置可用为空是就能够成功,这是什么鬼才算法,算了能成功就好了。 ...

奔跑的面条博客 1014

物理小白也能懂的PINN指南:用Python给神经网络注入‘物理常识‘

本文为物理小白提供了一份通俗易懂的PINN入门指南。通过生活化类比和Python实战,详细讲解了如何将物理定律作为约束注入神经网络,使其具备“物理常识”,从而在数据稀缺时也能做出符合规律的预测。文章以热传导方程为例,手把手教你从零构建物理信息神经网络。

open4的博客 349

Dify + mem0插件实战:如何让AI记住你的饮食习惯(附完整代码)

本文通过Dify平台与mem0插件实战,详细演示了如何为AI助手构建长期记忆系统,使其能记住并理解用户的复杂饮食习惯(如过敏源、饮食偏好)。文章提供了完整的工作流配置与Python代码示例,帮助开发者实现跨会话的个性化饮食建议,解决AI对话中的“健忘”问题。

lg888的博客 1095

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

Navicat 在添加mysql表的外键时报错1005,error150电脑版发表于:2020/4/28 17:33前言:hello大家好我们又见面了今天给大家分享一下Navicat在添加mysql表的外键时报错1005的情况。可能没多大用但还是简单的记录一下。话不多说直接开整说到外键这个东西真的是让人又爱又恨怎么说呢爱是因为它可以优化数据检索速度,为开发人员省下了不少工作恨是因为它...

weixin_39531378的博客 1760

二阶系统的带宽(频域分析)

下面以典型I型系统为例,计算系统的开环截止频率和闭环截止频率。设I型系统为: 1:系统的开环截止频率为 2:系统的闭环截止频率 其实我们在工程整定时,把ζ = 0.707,也把系统的带宽近视看成自然震荡角频率即 (wb≈wc≈wnw_{b}\approx w_{c}\approx w_{n}wb​≈wc​≈wn​)对于二阶系统。 ...

wanrenqi的博客 2万+

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

前言:hello大家好我们又见面了今天给大家分享一下Navicat在添加mysql表的外键时报错1005的情况。可能没多大用但还是简单的记录一下。话不多说直接开整说到外键这个东西真的是让人又爱又恨怎么说呢爱是因为它可以优化数据检索速度,为开发人员省下了不少工作恨是因为它的关联性和维护起来有点麻烦但是无奈还是得用到它。MySQL表外键外键是一个在关联式表中符合另一个表主键的栏位。...

weixin_39968722的博客 540

【3GPP核心网】【5G】史上最全的5G协议规范总结

物理层信道定义:TS38.211(物理层信号的生成、调制,DMRS和额外DMRS,PRACH configuration index,Point A等介绍)传输信道和控制信道的数据处理:TS38.212(包括复用,信道编码,交织,DCI,DMRS端口号等)物理层控制过程:TS38.213(同步,上行功控,随机接入,UE上报和接收控制消息的过程,SSB等)物理层测量:TS38.215(UE和网络的测量控制,UE测量能力)频率、频点相关F R1:TS38.101-1。

风云说通信 3177

Windows11配置WSL2支持代理上网

说起来本来这个功能我也不需要的,只是最近突然有个需求就顺便研究了下,WSL2默认的网络方式是NAT,即WSL2的网卡本身是虚拟网卡,通过以太网或WIFI的地址转换来上互联网,我试了下是不能直接走代理的,最近比较忙没具体研究,但是我用另一种方式实现了,下面介绍给需要的人。注意:这个方法只能是WIndows11系统,WIndows10系统上的WSL2缺少了一项功能导致不可用。1、方法总体没什么难度,NAT方式暂时没研究透,后续有时间再研究2、WIndows10系统不支持mirrored,暂时需要另辟蹊径。

jiexijihe945的博客 9590

navicat为什么mysql中外键创建不起error150_Navicat 在添加mysql表的外键时报错1005,error150,...

MySQL 表外键外键是一个在关联式表中符合另一个表主键的栏位。外键可以用作交叉参考表。在表设计器的 外键 选项卡管理表外键。只需简单地点击或双击一个外键栏位来编辑。右击来显示弹出菜单或使用外键工具栏,能让你创建新的、编辑或删除选择的外键栏位。注意:MySQL 3.23.44 或以上版本支持外键。添加外键添加一个外键在表设计器中打开表。打开 外键 选项卡。右击并在弹出菜单中选择 添加外键 或在工具...

weixin_33859931的博客 516

基于Spring Boot + Vue 3构建高并发华为数码商城交易平台:全栈架构设计与实现

内容将涵盖系统架构、数据库设计、核心模块开发(用户、商品、订单、购物车)、安全认证、性能优化以及前后端分离部署等关键环节,并提供详尽的代码示例,旨在为开发者提供一个可落地的企业级项目实战指南。<el-button text class="button" @click.stop="addToCart(product)">加入购物车</el-button>.antMatchers("/api/user/login", "/api/user/register").permitAll() // 公开接口。

2201_76125393的博客 306

mysql 外键 errno 150_MySQL外键错误1005 errno 150

我正在用MySQL工作台做一个小数据库。我有一个名为“Immobili”的主表,它有一个由四列组成的主键:(Comune,Via,Civico,Immobile)。现在,我还有另外三个表,它们具有相同的主键(Comune、Via、Civico、Immobile),但是这些字段也引用了Immobili表。第一个问题:我是否可以使主键同时也是外键?第二个问题:当我试图导出更改时,它会说:在服务器中执行...

weixin_30205357的博客 127

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

mysql 创建外键的问题 error 1005 errno 150 工具navicat

mysql 创建外键的问题,经常会碰到 error 1005: can not create table(error150)  原因之一:设置关联的字段类型不匹配,比如bigint 和 int     解决:外键的相关字段修改成同一类型就可以解决这个问题   原因之二:  解决:1. mysql支持外键约束,数据库类型必须是InnoDB         2. 建外键的表的列(字段)要

dvlp4j的专栏 2286

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

navicat(mysql)建立外键错误:1005 create table error 150

百度都是外键名称,格式等解决办法,无效。 测试一两年前的sql代码发现可以通过。 于是删除通过ui建立的表。 使用sql语句方式建立。(包括主表和从表) 下面是通过的sql语句:可以参考 create table camp( id INT PRIMARY KEY not null, name VARCHAR(255) )engine = InnoDB, chars...

weixin_42240941的博客 779

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

使用Navicat V5.5创建数据库,外键出现错误ERROR 1005: Can’t create table (errno: 121)

网上搜索结果告诉我有以下三种原因: 1、表名重复 2、以该名字命名的表之前创建过后来删除了,但是对应的.frm文件还留在磁盘上 3、主键名字在全数据库范围内不是唯一的 今天遇到的应该是第三种情况-----主键名字在全数据库范围内不是唯一的 在设置外键的时候,外键名之前在另外一张表里面已经使用过,这就造成了'121'这个错误。将外键名进行更改后,建表成功。 结合我自己的实际情况 ,推导自...

abcd2333的博客 3745

mysql hy000 1005_MYSQL外键之痛ERROR 1005 (HY000): Can't create table 'ecims.#sql-1ba8_212' (errno: 15...

在开发过程中,经常会用到给某个表建立外键约束,这个时候问题来,执行外键约束的时候经常会遇到创建不成功的问题,出现如下提示:引用ERROR 1005 (HY000): Can't create table 'ecims.#sql-1ba8_212' (errno: 150)我的建表语句如下:CREATE TABLE PRD_PARTNER(PKID CHAR(3...

weixin_33490603的博客 305

mysql处理添加外键时 error 150 问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34066347的博客 101

关于MySQL出现mysql -error 1005 (errno:150)解决办法

我不知道多少人遇到过这个情况,在创建外键时报了这个错误 看了许多大佬的博客,也用了他们的解决办法,但是并没有用, 看老师下的sqlyog,我也去下了一个,用了以后才知道是与mysql互相关联的。 最后解决办法是利用管理员模式打开navicat for mysql,但是!!还是不能在新建查询中插入数据库!! 然后最后创建成功是因为在命令列界面创建的! ...

qq_41098536的博客 1470
上一篇: 在SSH框架下实现jsp页面的局部刷新(ajax)
下一篇: SSH下,处理问题No Session,createCriteria,Could not open connection
SXT_fighting
博客等级 码龄9年 4粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值