MySQL#1452 - 无法添加或更新子行

时间:2017-01-12 23:26:18

标签: mysql database phpmyadmin innodb easyphp

我在这里打招呼,所有我想要做的就是插入一个外键的表字段,请看看这两个表:

分类

CREATE TABLE IF NOT EXISTS `categorie` (
    `id_cat` int(2) NOT NULL AUTO_INCREMENT,   
    `nom_cat` varchar(20) NOT NULL,   
    PRIMARY KEY (`id_cat`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

和表 Annonce

CREATE TABLE IF NOT EXISTS `annonce` (
  `id_annonce` int(6) NOT NULL AUTO_INCREMENT,
  `titre` varchar(30) NOT NULL,
  `description` varchar(255) NOT NULL,
  `tarif` float NOT NULL,
  `deplacement` int(2) NOT NULL,
  `date_creation` date NOT NULL,
  `date_expiration` date NOT NULL,
  `image` varchar(255) NOT NULL,
  `id_cat` int(2) DEFAULT NULL,
  PRIMARY KEY (`id_annonce`),
  KEY `id_cat` (`id_cat`),
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

手动链接外键id_cat(ON UPDATE SET NULL ON DELETE CASCADE)后db的外观如何

DB designer

将数据插入Categorie表后,它看起来像这样

Categorie table

但遗憾的是我无法执行此查询:

INSERT INTO annonce (id_annonce, titre, description, tarif, deplacement, 
                    date_creation, date_expiration,id_cat) 
VALUES('','anything','anything',2,3,'2017-04-01','2017-04-01',2)

错误说:

  

1452 - 无法添加或更新子行:外键约束失败   (lametcomannonce,CONSTRAINT annonce_ibfk_2外键(id_cat)   REFERENCES annonceid_cat)ON UPETE UP NULL更新CASCADE)

任何人都可以帮忙,对我可怜的英语感到抱歉,我希望你能理解我的意思

1 个答案:

答案 0 :(得分:1)

您的外键约束是错误的。

FOREIGN KEY id_cat REFERENCES annonce (id_cat)

但它应该是:

FOREIGN KEY id_cat REFERENCES categorie (id_cat)

外键约束中的表名必须是您要链接的表。