<small id='8q5sC'></small><noframes id='8q5sC'>

  1. <i id='8q5sC'><tr id='8q5sC'><dt id='8q5sC'><q id='8q5sC'><span id='8q5sC'><b id='8q5sC'><form id='8q5sC'><ins id='8q5sC'></ins><ul id='8q5sC'></ul><sub id='8q5sC'></sub></form><legend id='8q5sC'></legend><bdo id='8q5sC'><pre id='8q5sC'><center id='8q5sC'></center></pre></bdo></b><th id='8q5sC'></th></span></q></dt></tr></i><div id='8q5sC'><tfoot id='8q5sC'></tfoot><dl id='8q5sC'><fieldset id='8q5sC'></fieldset></dl></div>
    1. <legend id='8q5sC'><style id='8q5sC'><dir id='8q5sC'><q id='8q5sC'></q></dir></style></legend>

        <bdo id='8q5sC'></bdo><ul id='8q5sC'></ul>
      <tfoot id='8q5sC'></tfoot>

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

      时间:2023-08-18
    2. <legend id='0SlS9'><style id='0SlS9'><dir id='0SlS9'><q id='0SlS9'></q></dir></style></legend>
        <bdo id='0SlS9'></bdo><ul id='0SlS9'></ul>

          <i id='0SlS9'><tr id='0SlS9'><dt id='0SlS9'><q id='0SlS9'><span id='0SlS9'><b id='0SlS9'><form id='0SlS9'><ins id='0SlS9'></ins><ul id='0SlS9'></ul><sub id='0SlS9'></sub></form><legend id='0SlS9'></legend><bdo id='0SlS9'><pre id='0SlS9'><center id='0SlS9'></center></pre></bdo></b><th id='0SlS9'></th></span></q></dt></tr></i><div id='0SlS9'><tfoot id='0SlS9'></tfoot><dl id='0SlS9'><fieldset id='0SlS9'></fieldset></dl></div>

              <small id='0SlS9'></small><noframes id='0SlS9'>

              1. <tfoot id='0SlS9'></tfoot>
                  <tbody id='0SlS9'></tbody>
              2. 本文介绍了Mysql 错误 1452 - 无法添加或更新子行:外键约束失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

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

                I'm having a bit of a strange problem. I'm trying to add a foreign key to one table that references another, but it is failing for some reason. With my limited knowledge of MySQL, the only thing that could possibly be suspect is that there is a foreign key on a different table referencing the one I am trying to reference.

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

                I've done a SHOW CREATE TABLE query on both tables, sourcecodes_tags is the table with the foreign key, sourcecodes is the referenced table.

                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表.你必须先摆脱那些.

                Quite likely your sourcecodes_tags table contains sourcecode_id values that no longer exists in your sourcecodes table. You have to get rid of those first.

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

                Here's a query that can find those IDs:

                SELECT DISTINCT sourcecode_id FROM 
                   sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id 
                WHERE sc.id IS NULL;
                

                这篇关于Mysql 错误 1452 - 无法添加或更新子行:外键约束失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                <tfoot id='JJJ6n'></tfoot>

                    <tbody id='JJJ6n'></tbody>
                      <i id='JJJ6n'><tr id='JJJ6n'><dt id='JJJ6n'><q id='JJJ6n'><span id='JJJ6n'><b id='JJJ6n'><form id='JJJ6n'><ins id='JJJ6n'></ins><ul id='JJJ6n'></ul><sub id='JJJ6n'></sub></form><legend id='JJJ6n'></legend><bdo id='JJJ6n'><pre id='JJJ6n'><center id='JJJ6n'></center></pre></bdo></b><th id='JJJ6n'></th></span></q></dt></tr></i><div id='JJJ6n'><tfoot id='JJJ6n'></tfoot><dl id='JJJ6n'><fieldset id='JJJ6n'></fieldset></dl></div>

                      <small id='JJJ6n'></small><noframes id='JJJ6n'>

                    • <legend id='JJJ6n'><style id='JJJ6n'><dir id='JJJ6n'><q id='JJJ6n'></q></dir></style></legend>
                        <bdo id='JJJ6n'></bdo><ul id='JJJ6n'></ul>