#1215 - 无法添加外键约束

时间:2014-05-15 07:36:16

标签: php mysql sql

我正在使用Yiiframwork开展项目,我在数据库项目中有这个表

CREATE TABLE IF NOT EXISTS `tbl_annonce` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `idEntreprise` tinyint(3) unsigned NOT NULL 
   COMMENT 'CONSTRAINT FOREIGN KEY (idEntreprise) REFERENCES tbl_entreprise(id)',
  `titre` varchar(100) NOT NULL,
  `detailleDiscription` varchar(5000) NOT NULL,
  `categorie` varchar(100) DEFAULT NULL,
  `typePoste` varchar(100) NOT NULL,
  `salaireMin` varchar(80) NOT NULL,
  `salaireMax` varchar(80) NOT NULL,
  `niveauEtude` varchar(80) NOT NULL,
  `niveauExperience` varchar(80) NOT NULL,
  `langue` varchar(50) DEFAULT NULL,
  `poste` varchar(50) NOT NULL,
  `pays` varchar(50) NOT NULL,
  `ville` varchar(50) NOT NULL,
  `adresse` varchar(80) NOT NULL,
  `datePublication` timestamp NOT NULL 
       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `etat` varchar(50) NOT NULL,
  `photo` varchar(255)  NULL,
  `nometr` text NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_idEntrepriseAnn` 
      FOREIGN KEY (idEntreprise) 
      REFERENCES tbl_entreprise(id)
      ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

我只使用'comment',因为我在yii框架项目的教程中找到了它。 我在我的数据库中将属性“idEntreprise”作为FK,但当我在表'idEntreprise'中记录了其他entreprise时,这不是问题,而是一定是个问题

所以我添加了'identreprise'作为Fk,现在有了这个问题。

希望您理解我的问题:/

任何一个人都可以舔我!!

1 个答案:

答案 0 :(得分:0)

要在列上定义外键,它必须满足某些条件。

  1. 子列和父列必须按类型具有相同的列定义, 签名。
  2. 父列必须在其上定义索引。
  3. 确保

    1. tbl_entreprise.id已编入索引。
    2. idEntreprise tinyint(3) unsigned中的列定义tbl_annonce匹配 与tbl_entreprise.id
    3. 的那个

      请参阅MySQL: Foregin Key Constaints