Mysql 错误 1452 - 无法添加或更新子行:外键约束失败

2023-11-25

我遇到了一个奇怪的问题。我正在尝试向引用另一个表的一个表添加外键,但由于某种原因失败了。由于我对 MySQL 的了解有限,唯一可能怀疑的是另一张表上有一个外键引用了我试图引用的表。

我做了一个SHOW CREATE TABLE对两个表进行查询,sourcecodes_tags是带有外键的表,sourcecodes是引用的表。

CREATE TABLE `sourcecodes` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `user_id` int(11) unsigned NOT NULL,
 `language_id` int(11) unsigned NOT NULL,
 `category_id` int(11) unsigned NOT NULL,
 `title` varchar(40) CHARACTER SET utf8 NOT NULL,
 `description` text CHARACTER SET utf8 NOT NULL,
 `views` int(11) unsigned NOT NULL,
 `downloads` int(11) unsigned NOT NULL,
 `time_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`),
 KEY `user_id` (`user_id`),
 KEY `language_id` (`language_id`),
 KEY `category_id` (`category_id`),
 CONSTRAINT `sourcecodes_ibfk_3` FOREIGN KEY (`language_id`) REFERENCES `languages` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `sourcecodes_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `sourcecodes_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

CREATE TABLE `sourcecodes_tags` (
 `sourcecode_id` int(11) unsigned NOT NULL,
 `tag_id` int(11) unsigned NOT NULL,
 KEY `sourcecode_id` (`sourcecode_id`),
 KEY `tag_id` (`tag_id`),
 CONSTRAINT `sourcecodes_tags_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1

这是生成错误的代码:

ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADE

很可能你的sourcecodes_tags表包含sourcecode_id你的价值观中不再存在sourcecodes桌子。你必须先摆脱那些。

下面是一个可以找到这些 ID 的查询:

SELECT DISTINCT sourcecode_id FROM 
   sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id 
WHERE sc.id IS NULL;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql 错误 1452 - 无法添加或更新子行:外键约束失败 的相关文章

  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

    我应该使用哪个来链接 mysqlclient 库 它们之间有什么区别 我似乎找不到答案 谢谢 较新版本的 MySQL 客户端发行版不包含 r 版本 有些可能有从 libmyqslclient r a 到 libmyqslclient a 的
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 如何在 SEQUELIZE (nodeJS) 中创建触发器?

    我正在尝试使用sequelize 创建一个触发器 主要思想是创建一个实例CONFIG创建后USER USER MODEL module exports function sequelize DataTypes var User sequel
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 在 SQL 中,如何从 SELECT * FROM ... 中排除结果?

    我知道我的标题不太具有描述性 让我在这里详细解释一下 假设一个表有 26 个字段 例如字段 a 字段 z 我只想要一个选择查询只返回 15 个字段 所以 通常 我会执行 SELECT field a field b field o FROM
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 条消息列表。使用emitter.setMaxListeners()来增加限制

    我知道这可能会标记为重复的解决方案 但堆栈溢出的解决方案对我不起作用 Problem node 5716 MaxListenersExceededWarning Possible EventEmitter memory leak detec
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • SELECT NULL、*、NULL、NULL 中令人困惑的 SQL 错误

    的背景我试图解决第四个现实任务 https www hackthissite org playlevel 4 在 hackthissite org 中 无法确切地弄清楚我应该在 URL 中注入什么 SQL 来检索电子邮件列表 浪费了几个小时
  • SQL:在行中保留计数或从数据库中选择计数

    示例 我有 2 张桌子 类别 Posts 在这样的类别中保留帖子编号是一个好方法吗 类别 id title posts 1 golf 50 2 soccer 90 posts id title category id 1 news 1 1
  • 从前端更改记录顺序

    我在编写下一个功能时遇到问题 我希望用户能够重新排列记录并更改 display order 值 我使用 Jquery UI 的可拖放功能来促进这一点 我可以看到如何简单地交换 display order 值 但我想为一条记录设置一个显示顺序
  • 如何从表中选择所有偶数 id?

    我想从 MySQL 数据库的表中选择所有甚至帖子 ID 然后显示它们 我还想获取所有带有奇怪 id 的帖子并将它们显示在其他地方 我想使用 PHP 来完成此操作 因为这是我使用的服务器端语言 或者 我是否必须选择所有帖子 然后使用 Java
  • 如何使用java避免Mysql数据库中的“数据因列被截断”?

    在我的 Java 程序中 Hibernate Bean 类定义一列 例如 TimtableVO java Column name REPEAT DAYS private WeekdayType repeatDays hear Weekday

随机推荐

  • Coinbase API client.getAccount(...) 开始返回:“错误:无法获取本地颁发者证书”[重复]

    这个问题在这里已经有答案了 该问题于太平洋时间 2020 年 3 月 31 日上午晚些时候开始 对 Coinbase 进行 API 调用的服务器托管在带有 node js GCP 的 Google App Engine 上 几周前 Coin
  • 没有为运行配置定义 SDK

    当我尝试在 PyCharm 中运行我的项目时 出现错误 SDK 未定义运行配置 我尝试设置一个新的翻译并尝试了一切 SDK 是什么意思以及在哪里可以配置它 我刚刚遇到了同样的问题 请参阅上面的评论 对我有用的是进入 编辑配置 删除从原始电脑
  • 哪个 gem 破坏了 Rails application.css.scss 参数数量错误 3 为 2

    好的 这是gem更新引起的新问题 调用 Bundle update 会破坏我的 Rails 应用程序 以下是更改的宝石 Gemfile lock compass 0 12 7 compass 0 12 2 sass gt 3 2 19 sa
  • 在 Windows 8 桌面应用程序上使用 MediaCapture

    在 Windows 8 桌面应用程序上 我需要使用 C 4 5 中的相机拍照 我尝试使用 CameraCaptureUI 类 但它在桌面应用程序上不可用 所以我尝试使用 MediaCapture 类 它可用于 Metro 应用程序或桌面应用
  • 朱利安方法来执行Python的yield(以及yield from)

    朱利安的收益率 以及收益率 方法是什么就像蟒蛇一样 编辑 我将尝试在 python 中添加小示例 想想 4x4 棋盘 找出国际象棋王可以走的每N步长路径 不要浪费内存 gt 为每条路径生成生成器 如果我们用数字签署每个位置 0 1 2 3
  • 在实现中重新包含标头

    假设我有一个标题foo h像这样 ifndef FOO H define FOO H include
  • Spinner 无法加载整数数组?

    我有一个应用程序 其中有一个微调器 我想用一些数字 4 8 12 16 填充它 我使用上述项目在 strings xml 中创建了一个整数数组对象 将 Spinner 的条目设置为整数数组 当我运行应用程序时 我得到 04 19 23 38
  • Vnext 参数 1:无法从“string”转换为“System.IO.Stream”

    我正在尝试创建一个Next 项目中的通用序列化器当我调用 StreamWriter 的构造函数时 它会抛出此编译器错误 错误 CS1503 参数 1 无法从 字符串 转换为 System IO Stream Test ASP NET Cor
  • 从 Javascript 更改 CSS 规则集

    是否可以动态更改 CSS 规则集 即 当用户单击小部件时 某些 JS 会更改 CSS 规则集 这个特定的 CSS 规则集应用于页面上的许多元素 通过类选择器 我想在用户单击小部件时对其进行修改 以便所有具有class change 可以 但
  • 使用 Asp.net 路由的 IRouteHandler.GetHttpHandler 中的会话为 null

    我试图在 IRouteHandler 类的 GettHttpHandler 方法中启用会话 但会话始终为空 有人可以告诉我我做错了什么吗 在 global asax 我有 RouteTable Routes Add All new Rout
  • 多次加载 DLL?

    我正在使用LoadLibrary在 Windows 中加载 DLL 的函数 我的问题是 如果我对同一个 DLL 多次调用此方法 我是否会获得该 DLL 的不同实例的句柄 或者它们都引用同一个实例 此外 这种行为与 Linux SO 文件有何
  • 有什么解决方案可以将验证码添加到 Django-allauth 吗?

    有没有将验证码与 django allauth 一起使用的解决方案 我想在注册表上使用验证码进行标准电子邮件 密码注册 我也需要用 django allauth 来做到这一点 并发现实现django recaptcha封装起来比较简单 配置
  • Node.js (ES6 / Babel) 中 import X 和 import * as X 的区别?

    我有一个 Node js 库lib用 ES6 编写 编译为Babel 其中我导出以下子模块 use strict import as config from config import as db from db import as sto
  • 编译时按架构排除go源文件

    我正在为 Windows 编写一个 Go 程序 其中包含多个包 其中一个包是使用 CGo 调用一些 h 和 c 文件中定义的一些函数 这些 c 文件依赖于 windows h 由于在 Windows 平台上开发非常繁琐 我想制作这个文件中的
  • 防止递归函数中出现 StackOverFlow

    我有一个递归函数BaseClass这依赖于一个protected virtual函数的返回条件 子类可能会错误地覆盖此函数并导致StackOverFlow例外 最糟糕的是有一些缓慢的网络调用 并且异常不会很快发生 许多资源浪费了很长一段时间
  • Swift DateFormatter 可选毫秒[重复]

    这个问题在这里已经有答案了 我有以下代码来解析 ISO8601 日期 let dateFormatter DateFormatter dateFormatter dateFormat yyyy MM dd T HH mm ss SSSZZZ
  • Jsoup.parse() 与 Jsoup.parse() - 或者 Jsoup 中的 URL 检测如何工作?

    Jsoup 有 2htmlparse 方法 解析 字符串 html 由于没有指定基本 URI 因此是绝对 URL 检测依赖于包含标签的 HTML 解析 字符串 html 字符串 baseUri HTML 所在的 URL 被检索自 用于将相对
  • 如何在 Mac OS X 中实现全局键盘挂钩?

    我知道这可以在 Windows 上完成XGrabKeyX11可以用 但是Mac OS X呢 我想创建一个类 允许设置即使应用程序窗口处于非活动状态也可以调用的快捷键 Cocoa 中 还没有 不支持这一点 您仍然可以使用旧的 Carbon 库
  • 在 IPython Notebook 中同时使用 Python 2.x 和 Python 3.x

    我使用 IPython 笔记本 并且希望能够选择在 IPython 中创建 2 x 或 3 x python 笔记本 我最初有Anaconda 使用 Anaconda 时 必须更改全局环境变量以选择所需的 Python 版本 然后才能启动
  • Mysql 错误 1452 - 无法添加或更新子行:外键约束失败

    我遇到了一个奇怪的问题 我正在尝试向引用另一个表的一个表添加外键 但由于某种原因失败了 由于我对 MySQL 的了解有限 唯一可能怀疑的是另一张表上有一个外键引用了我试图引用的表 我做了一个SHOW CREATE TABLE对两个表进行查询