Mysql 由于外键约束,无法删除行

Mysql 由于外键约束,无法删除行,mysql,Mysql,我有两张桌子用户和注释。我希望用户能够对评论进行投票,所以我制作了另一个名为user\u vote\u comment的表格。我让user表上的id列和comment表上的id列成为user\u vote\u comment表上的复合主键 这是user\u vote\u comment表的结构: CREATE TABLE IF NOT EXISTS `user_vote_comment` ( `user_id` INT(11) UNSIGNED NOT NULL, `comment_i

我有两张桌子<代码>用户和
注释
。我希望用户能够对评论进行投票,所以我制作了另一个名为
user\u vote\u comment
的表格。我让
user
表上的
id
列和
comment
表上的
id
列成为
user\u vote\u comment
表上的复合主键

这是
user\u vote\u comment
表的结构:

CREATE TABLE IF NOT EXISTS `user_vote_comment` (
  `user_id` INT(11) UNSIGNED NOT NULL,
  `comment_id` INT(11) UNSIGNED NOT NULL,
  PRIMARY KEY (`user_id`, `comment_id`),
  INDEX `fk_user_vote_comment_comment1_idx` (`comment_id` ASC),
  CONSTRAINT `fk_user_vote_comment_user1`
    FOREIGN KEY (`user_id`)
    REFERENCES `user` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_user_vote_comment_comment1`
    FOREIGN KEY (`comment_id`)
    REFERENCES `comment` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
现在,我在
用户投票\u评论中添加了一些行,但随后我想删除一些投票,因为我想让用户拥有取消投票的选项。但是我得到了这个错误信息:

Error 1451: Cannot delete or update a parent row: a foreign key constraint fails (`user_vote_comment`, CONSTRAINT `fk_user_vote_comment_comment1` FOREIGN KEY (`comment_id`) REFERENCES `comment` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
我以为用户和注释表是这里的父表?如果我要删除一个用户或一条评论,这是一个约束,这是有意义的,那么我应该会得到一个错误,因为
user\u vote\u comment
中的某些行依赖于该信息,而不是相反

我不明白为什么我不能删除
user\u vote\u comment
中的行,我觉得如果我甚至不能删除其中的行,我会受到太多的限制


我该怎么办?

您可以在DELETE CASCADE上设置
,而不是在DELETE NO ACTION上设置
我认为您的SQL没有任何问题。可能是您在上述问题中遗漏了导致问题的其他内容


我用SQLFiddle()做了一个快速测试,我可以很好地从USER\u VOTE\u COMMENT表中删除

这不会尝试删除所有用户和评论吗?因为它认为它们是子表,所以应该是相反的。我不知道为什么在尝试从
user\u vote\u comment
中删除一行时,外键约束会失败,但是,删除无操作时的
将阻止删除
注释
用户
表中被
用户投票(注释)
表中的行引用的行
以避免孤立条目更新无操作时的
也会发生同样的情况
,这将阻止更新
comment
user
表中
user\u vote\u comment
引用的行的主键。至于数据的一致性,我认为如果您允许删除用户和评论,您应该在DELETE CASCADE上指定