奇怪的是“无法添加或更新子行:外键约束失败”错误

时间:2015-04-30 18:57:13

标签: mysql foreign-keys

我目前正在将一个主要ID列从MySQL数据库中的string Rusher = "Character/FirstRusher"; player = new Animation(Content.Load<Texture2D>(Rusher), new Vector2(650, 600), 82, 42); 转换为if(scorepoints == 20) speed = 10; Rusher = "Character/SecondRusher"; 。这个过程非常简单,

  1. 删除所有引用该列的外键(不能使用外键修改它)
  2. 修改ID列以及在其他表中引用它的所有列
  3. 中添加外键

    除了步骤3中的1个外键,一切正常,我得到以下错误,

    INT

    我对这个错误并不陌生。这通常意味着我的列名称错了或者什么,但在这种情况下我很确定我没有,除非我发疯。请参阅下面的剪切表导出

    STRING

    ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`cp`.`#sql-1_13`, CONSTRAINT `widgets_candidate_id_foreign` FOREIGN KEY (`candidate_id`) REFERENCES `candidates` (`id`)) 查询是,

    CREATE TABLE `candidates` (
      `id` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
      ---- SNIP ----
      PRIMARY KEY (`id`),
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
    
    CREATE TABLE `widgets` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `candidate_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
      ---- SNIP ----
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2203 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC
    

    我认为可以的唯一内容是MODIFY表上的ALTER TABLE `widgets` ADD CONSTRAINT widgets_candidate_id_foreign FOREIGN KEY (`candidate_id`) REFERENCES `candidates` (`id`); ROW_FORMAT=DYNAMIC可以在页外存储,从而导致问题吗?

    有什么想法吗?

    感谢。

0 个答案:

没有答案