由于表结构更改,使用新建表,现有部分表需要更改外键,将引用更改到新建表的相应字段。在更改过程中,部分表出现如下错误提示:

ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 '' 冲突。该冲突发生于数据库 “***”,表 “***”, column “***”。

反复查看后,包括字段类型、长度等完全一致。不得其解,在网上找了下,发现有如下文章[1]提示:

根源: XXX表有数据

解决:删掉XXX表的数据再执行sql语句

恍然大悟,查看引用表数据与被引用表数据做比较,才发现,原来是相应字段数据不一致的问题。即引用表中的相应字段数据,在被引用表中并不存在,无法建立实际上的外键关系,这是引用完整性的要求。早在读书时就学到的东西,今天居然忘记了。看来,知识只有在用了之后才属于自己。

此外,在主次表引用设置后,也可能会出现正面的情况。即主表中的外键,在次表中已经失效,或不存在。

如表A:

aid aname
1 Lucy
2 Lily
3 Kimi

表B引用表A的aid作为外键

bcode aid(FK from A) bvalue
001 1 bone
002 2 btwo
003 5 bthree

由于表B中的“aid”字段引用了表A的“aid”,因此,如果此时想修改表B的定义结构,即会出现文章最开始出错的信息,修改失败。就是因为表B中的第三条数据,引用的“aid”为“5”的那条记录,因为表A中不存在这条记录,修改表之前的验证无法通过。只有删除了这条数据之后,再次修改表B才会成功。

PS:正常情况下,如何使用了“强制外键约束”,则不会出现上面的问题。因为存在外键引用,是无法删除被引用表某些数据的。如果将“强制外键约束”选项是“否”。则可以删除相应的数据。


参考文献:

[1] ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 '' 冲突 ,大尾巴狼专栏

解决修改表结构,添加外键时出现“约束冲突”的错误的更多相关文章

  1. djangoORM 修改表结构/字段/外键操作

    Django支持修改表结构 把max_length=64 改为60 再执行一遍 python manage.py makemigrations python manage.py migrate 如果是 ...

  2. [转载] Can't create table './store/#sql-b2c_1a.frm' (errno: 150)和sql execution error #1452添加外键时错误解决方法

    Can't create table './store/#sql-b2c_1a.frm' (errno: 150)解决方法 错误原因有四: 1.外键的引用类型不一样,主键是int外键是char 2.找 ...

  3. mysql为表添加外键完成性约束 报错Can't create table 'sfkbbs.#sql-513_25' (errno: 150)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtkAAAAyCAIAAAAGM1ChAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu

  4. Oracle表中添加外键约束

    添加主键约束: ALTER TABLE GA_AIRLINE ADD CONSTRAINT PK_AIRLINE_ID PRIMARY KEY(AIRLINE_ID); 有三种形式的外键约束: 1.普 ...

  5. code first 添加外键时,与原有的数据冲突ALTER TABLE 语句与 FOREIGN KEY 约束"FK_XXXXX"冲突

    问题的原因是新增的外键字段没有默认值,造成的,有很多方法可以解决,我这里通过修改生成的迁移文件,设定为可空,或者设置默认值即可.具体看情况使用.

  6. mysql 添加外键时 error 150 问题总汇

    当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的.像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,事实上, ...

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

    当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的.像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,事实上, ...

  8. 解决code first Migration 增加外键时出现错误的问题

    先上模型 Comment public class Comment { [Key] public int CommentId { get; set; } [Required] public int S ...

  9. MySQL添加外键报错 - referencing column 'xx' and referenced column 'xx' in foreign key constraint 'xx' are incompatible

    MySQL给两个表添加外键时,报错 翻译意思是:外键约束“xx”中的引用列“xx”和引用列“xx”不兼容 说明两个表关联的列数据类型不一致,比如:varchar 与 int,或者 int无符号 与 i ...

随机推荐

  1. P4596 [COCI2011-2012#5] RAZBIBRIGA

    题目描述 四个等长的单词可以放在一起构成一个正方形,两个单词水平放置,两个竖直放置.水平单词只能从左往右读,竖直的单词只能从上往下读.四个角共用一个字母. 图中是由单词HLAD,NIVA,HSIN,D ...

  2. python beautifulsoup/xpath/re详解

    自己在看python处理数据的方法,发现一篇介绍比较详细的文章 转自:http://blog.csdn.net/lingojames/article/details/72835972 20170531 ...

  3. vyos 基础配置

    vyos 基础配置 http://www.lowefamily.com.au/2015/11/29/using-a-vyos-router-with-hyper-v/1/http://thomasvo ...

  4. 超计算(Hyper computation)模型

    超计算(Hyper computation)模型 作者:Xyan Xcllet链接:https://www.zhihu.com/question/21579465/answer/106995708来源 ...

  5. uoj259 & 独立集问题的一些做法

    很早以前就做了一遍这题,当时好像啥都不会,今天重做一下. 这个题题意简单地说就是输入k.p和一个图,求图大小为k的独立集个数mod p. subset1.in  n=24,m=19,k=8 subse ...

  6. 【CF183D】T-shirt(动态规划,贪心)

    [CF183D]T-shirt(动态规划,贪心) 题面 洛谷 CodeForces 题解 \(O(n^2m)\)的暴力懒得写了,比较容易,可以自己想想. 做法是这样的,首先我们发现一个结论: 对于某个 ...

  7. JavaScript搜索关键字高亮的实现

    高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色.一般在搜索结果页面会经常用到这个功能. 下面就为大家提供一种解决方案,用javascript实现. 首先在<head> ...

  8. Chapter 4(栈与队列)

    1.栈的顺序存储结构 //*********************************stack_array.h************************************ #ifn ...

  9. python学习(20) 网络编程

    原文链接:http://www.limerence2017.com/2018/01/02/python20/ python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库建议采用C/ ...

  10. SSH连接与自动化部署工具paramiko与Fabric

    paramiko paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方法.可以实现远程命令执行,文件传输,中间SSH代理等功能,相对于Pexpect,封装层次更高. pip ...