首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL中创建外键的错误:1215 Cannot add the foreign key constraint

引言: MySQL中经常会需要创建父子表之间的约束,这个约束是需要建立在主外键基础之上的,这里解决了一个在创建主外键约束过程中碰到的一个问题。 1....碰到错误 在创建外键之时,使用的SQL和碰到错误信息如下: alter table `product' add CONSTRAINT `sid_ref` FOREIGN KEY (`sid`)...REFERENCES `sealer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION 碰到的错误信息如下: 无法正确的插入外键约束。...问题分析 主外键更多的是某表的主键与子表的某个列进行关联,要求是具备相同的数据类型和属性,问题会不会出现在这里?...解决的办法 修改product.sid中的数据类型,添加unsigned和字段的长度,将其设置为相同即可。 5.

2.5K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django中基表的创建、外键字段属性简介、脏数据概念、子序列化

    Django中基表的设置 通过图书管理系统引入多表操作:如果我们创建表的方式是先抽象出表与表之间相同的字段建一个父类,然后在用每个表类去继承这个父类,如下面的代码,我们将无法得到期望的表字段。...如两张表建立了一对一外键字段,外键在A表,那么先往B表写数据就更合理。...假设图书管理系统中书、出版社、作者、作者详细信息四张表之间的关系如下: """ 表关系 1)Book 和 Publish 一对多:外键在多的一方 Book 2)Book 和 Author 多对多:外键在查询频率高的一方...Book 3)Author 和 AuthorDetail 一对一:外键要根据实际需求建立在合理的位置 AuthorDetail(外键在AuthorDetail方作者就可以没有AuthorDetail,...更合理) """ Django orm中外键字段属性详解 在建表之前我们对外键字段属性进行了解: 1)related_name在外键中设置外键反向查询的字段名:正向找字段名,反向找related_name

    4.3K30

    EasyGBS级联通道表在mysql中无法生成的问题排查及调整

    用过国标协议平台EasyGBS的朋友们应该都知道,GB28181协议是公安部提出来的,能够对接公安部的网络系统,给安防带来了很大的便利性,EasyGBS就支持集成接入自己的平台,也能够对视频进行录像,同时...,EasyGBS有很多二次开发的可能,因为我们会提供丰富的二次开发接口,是一种十分实用的视频监控网页直播方案。...作为上级平台,EasyGBS可能遇到很多平台或设备同时接入的情况,这时我们可能会遇到EasyGBS级联通道表在mysql中无法生成的问题,查看数据库发现在程序生成通道级联表时卡住了。...添加如下代码,在创建级联表的struct结构体中id字段设置主键和类型之间的type在mysql中不能用分号隔开,去除后在mysql和sqlite中均正常。...EasyGBS的级联功能我们讲过很多,前段时间开发的EasyNVR通过国标GB28181协议接入EasyGBS的过程大家可以了解下:EasyNVR之EasyNVR到EasyGBS上是如何注册及注销的。

    1.3K20

    说实话,DataGrip真得牛逼,只是你不会用而已~

    如果需要激活教程:blog.idejihuo.com1、数据编辑器工具提示中的列注释智能代码完成DataGrip提供上下文相关的代码完成,帮助您更快地编写SQL代码。...完成可以识别表格结构、外键,甚至是您正在编辑的代码中创建的数据库对象。即时分析和快速修复DataGrip会检测代码中可能存在的错误,并建议动态修复它们的最佳选项。...它会立即让您了解未解决的对象,使用关键字作为标识符,并始终提供解决问题的方法。 2、日志更新完整的SQL日志,现在您将看到DataGrip在控制台输出中运行的每个查询。...跳到关闭括号/报价之外从此版本开始,您可以通过按Tab键在结束括号之外导航或关闭引号 。请注意,这仅在第一次输入参数或值时有效。...它具有实用的功能,支持DB2、Derby、H2、MySQL、Oracle、PostgreSQL、SQL Server、Sqllite及Sybase等网上主流的关系数据库产品,除了能执行sql、创建表、创建索引以及导出数据等常用的功能之外

    9.3K20

    mysql面试题目及答案_docker 面试题

    触发器是在一个修改了指定表中的数据时执行的存储过程。通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。...;在where和join中出现的列需要建立索引;如果where字句的查询条件里使用了函数(如:where DAY(column)=…),mysql将无法使用索引;在join操作中(需要从多个数据表提取数据时...),mysql只有在主键和外键的数据类型相同时才能使用索引,否则及时建立了索引也不会使用; 25.说一说什么是外键,优缺点 外键指的是外键约束,目的是保持数据一致性,完整性,控制存储在外键表中的数据。...使两张表形成关联,外键只能引用外表中列的值;优点:由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的完整性,而用外键即使在数据库服务器当机或者出现其他问题的时候,也能够最大限度的保证数据的一致性和完整性...update, delete 数据的时候更快); 26.在什么时候你会选择使用外键,为什么 在我的业务逻辑非常简单,业务一旦确定不会轻易更改,表结构简单,业务量小的时候我会选择使用外键。

    1.1K20

    MySQL 约束

    外键约束 外键约束用于建立表与表之间的关系,确保引用另一个表中的值时的完整性。 外键约束经常和主键约束一起使用,用来确保数据的完整性,即保证该字段的值必须来自于主表的关联列的值。...在从表添加外键约束,用于引用主表中某列的值。 例如,在员工信息表中,员工所属部门是一个外键,因为该字段是部门表的主键。...), UNIQUE (name, email) ); 创建外键约束 建表时使用 FOREIGN KEY 引用主表创建外键。...例如,在员工信息表中,员工所属部门是一个外键,因为该字段是部门表的主键。...CHECK (c1 c2) 是表约束:它出现在任何列定义之外,因此它可以(并且确实)引用多个表列。 此约束包含对尚未定义的列的前向引用。没有指定约束名称,因此 MySQL 生成一个名称。

    23110

    Mysql命名规范

    表必须有主键,推荐使用 UNSIGNED 整数为主键 潜在坑:删除无主键的表,如果是 row 模式的主从架构,从库会挂住 禁止使用外键,如果要保证完整性,应由应用程式实现 说明:外键使得表之间相互耦合...复制代码 count(distinct col) 计算该列除 NULL 之外的不重复行数,注意 count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值...复制代码 在代码中写分页查询逻辑时,若 count 为 0 应直接返回,避免执行后面的分页语句。 不得使用外键与级联,一切外键概念必须在应用层解决。...说明:以学生和成绩的关系为例,学生表中的 `student_id` 是主键,那么成绩表中的 `student_id` 则为外键。...外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。

    8K21

    MySQL数据库基础练习系列15、留言板系统

    数据库DDL(注意创建顺序) 为了直接运行DDL语句并创建表,我们需要确保在创建含有外键约束的表之前,相关的被引用表(即外键指向的表)已经存在。...所以我们在创建表的时候一定要按照一定的顺序来创建,否则就会出现没有外键关系导致的创建异常。...user_id INT, -- 板块ID,外键关联boards表 board_id INT, -- 留言标题,不能为空 title VARCHAR(255) NOT NULL...每一列都是不可再分的最小数据单元(也称为最小的原子单元)。 解释: 在第一范式中,主要关注的是列的原子性。...在第二范式中,一个表只能保存一种数据,不可以把多种数据保存在同一张数据库表中。 如果表中的某一列只与复合主键的一部分有关,那么它就不应该存在于这个表中,而应该被分离出去形成另外一张新表。

    14010

    linux 之mysql——约束(constraint)详解

    一、什么是约束 约束英文:constraint 约束实际上就是表中数据的限制条件 二、约束作用 表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效性 比如name字段中要让其用户名不重复,这就需要添加约束...A为基本表,B为信息表 1、外键涉及到的术语 外键约束 外键字段 外键值 2、外键约束、外键字段、外键值之间的关系 某个字段添加外键约束之后,该字段称为外键字段,外键字段中每个数据都是外键值 3、按外键约束的字段数量分类...classno字段中的数据必须来自于班级表中的cno字段中的数据,有必要给学生表中的classno字段添加外键约束  注意要点: 外键值可以为null 外键字段去引用一张表的某个字段的时候,被引用的字段必须具有...unique约束 有了外键引用之后,表分为父表和子表 班级表:父表 学生表:子表 创建先创建父表 删除先删除子表数据 插入先插入父表数据 存储学生班级信息  mysql> create table t_class...:如果父表中的记录被删除,则子表中对应的记录自动被删除 父表——被外键引用的表 子表——引用父表中的健作为外健的表 on delete set null  表的关联列的值设置为null  alter table

    2.5K30

    【MySQL】MySQL数据库的初阶使用

    除了使用默认的编码和校验规则之外,我们也可以在创建数据库的时候,指定编码和校验规则,例如下面创建数据库的时候,使用到了gbk的校验规则。 4....当创建表的第二个列字段为char(2)的时候,可以看到两个汉字和两个字母都可以插入到表中,但三个字母却无法插入,如果这里的字符和C语言中的字符概念相同的话,那就是2个字节的大小,那就不应该插入两个汉字,...外键约束是innodb存储引擎的一个重要特性,外键一般用于进行表和表之间的关联,用于约束具有关联性的表,比如下面的学生表和班级表,学生是隶属于班级的,比较合理的做法就是创建外键约束,外键为学生表中的class_id...当建立外键约束后,外键为stu表中的class_id,引用自class表中的id,如果此时将学生插入到不存在的班级,或者删除某个班级,一个学生插入到两个班级等等不合逻辑的操作,都会被MySQL拦截掉,保证表与表之间正确的关联关系...其实这里的外键,个人觉得和复合主键有那么一点点相似,必须保证外键和引用之间的唯一性,但外键的约束显然是要比复合主键更严格的,比如删除引用(引用中还存在着外键)是不被允许的,一个外键列中的字段只能配一个引用列中的字段

    34630

    详解Mysql执行计划explain

    eq_ref:最多只会有一条匹配结果,一般是通过主键或者唯一键索引来访问;在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用...ref_or_null:与ref 的唯一区别就是在使用索引引用查询之外再增加一个空值的查询。...这里的索引名字是创建索引时指定的索引昵称;如果索引没有昵称,则默认显示的是索引中第一个列的名字。...在不损失精确性的情况下,长度越短越好 5、ref 显示的是列的名字,显示索引的哪一列被使用了,MySQL将根据这些列来选择行,如果可能的话,是一个常数 。...这里,mysql需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上。

    95820

    大佬都在用的数据库设计规范!你不点进来看看嘛?

    (或数字),禁止出现数字开头,禁止两个下划线中间只出现数字.数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑 MySQL在windows下不区分大小写,但在Linux下默认是区分大小写的...1的返回结果是NULL,而不是true 在代码中写分页逻辑时,若count为0应直接返回,避免执行后面的分页语句 不得使用外键与级联,一切外间的概念必须在应用层解决 比如学生和成绩的关系: 学生表中的...student_id是主键,那么成绩表中的student_id则为外键 如果更新学生表中的student_id,同时触发成绩表中的student_id更新,即为级联更新 外键与级联更新适用于单机低并发,...不适合分布式,高并发集群 级联更新是强阻塞,存在数据库更新风暴的风险 外键影响数据库的插入速度 禁止使用存储过程,存储过程难以调试和扩展,更没有移植性 数据订正(数据删除,修改记录操作)时,要先select...is, 而数据库字段必须加is_, 要求在resultMap中进行字段与属性之间的映射 定义POJO类以及数据库字段定义规定,在中增加映射,是必须的 在MyBatis Generator生成的代码中,

    48320

    程序员面试必备PHP基础面试题 - 第十一天

    ,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。...外键:若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。A为基本表,B为信息表。...关系:外键一定是另外某个表的主键。...二.将物理备份的文件拷贝到mysql的data目录下 五、内容管理系统中,表message有如下字段 id 文章id title 文章标题 content 文章内容 category_id 文章分类id...hits 点击量 创建上表,写出MySQL语句 Create table if not exists message(   Id int not null AUTO_INCREMENT PRIMARY

    59320

    MySQL基础这样学

    外键约束:FOREIGN KEY,A表中的外键列. A表中的外键列的值必须参照于B表中的某一列(B表主 键)。 6.5.1、主键约束     主键值是这行记录在这张表中的唯一标识,就如同身份证号。...**例如员工表与部门表之间就存在关联关系,其中员工表中的部门编号字段就是外键,是相对部门表的外键。     ...设计从表可以有两种方案: 在t_card表中添加外键列(相对t_user表),并且给外键添加唯一约束; 给t_card表的主键添加外键约束(相对t_user表),即t_card表的主键也是外键。...t_user和t_section的关系,从t_user来看就是一对多,而从t_section的角度来看就是多对一!这种情况都是在多方创建外键!...这种情况通常需要创建中间表来处理多对多关系。例如再创建一张表t_stu_tea表,给出两个外键,一个相对t_stu表的外键,另一个相对t_teacher表的外键。

    2.2K20

    基本 SQL 之数据库及表管理

    SHOW DATABASES; 除此之外,你也可以创建数据库,使用以下这个命令。...但是实际上,SQLServer,Oracle,MySQL 等数据库的具体实现上也大多都支持这些类型,只不过在不同的数据库中,同一种数据类型可能有不同的名称。...但时,UNIQUE 是不能唯一确定一行数据的,那是因为 UNIQUE 对空值无法约束。 你不让我将字段的值赋值为表中已知行数据的该字段值,那我可以不赋值,该字段的值为空。...这就用到一个键叫『外键』,两张表之间的微妙关系我们可以叫做外键约束。 举个例子吧,自己画图太丑,网上随便找的表结构示意图: ? ?...上述示例中,我们管订单表中的 Id_P 字段叫做『外键』,它其实又是 persons 表的『主键』。

    1.8K30
    领券