#1005 - 无法创建表'test_db.demandes_gardes'(错误号:150)(详情......)

时间:2015-11-15 03:07:13

标签: mysql foreign-keys

我无法在phpmyadmin上执行此查询以升级我的sql test_db:

    CREATE TABLE IF NOT EXISTS `demandes_gardes` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `nom` VARCHAR(255) NULL,
  `prenom` VARCHAR(255) NULL,
  `matricule` VARCHAR(255) NULL,
  `chambre` VARCHAR(255) NULL,
  `autre` TEXT NULL,
  `garde_id` INT NOT NULL,
  `statut_id` INT NOT NULL,
  `created` DATETIME NULL,
  `updated` DATETIME NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_demandes_gardes_gardes1_idx` (`garde_id` ASC),
  INDEX `fk_demandes_gardes_statuts1_idx` (`statut_id` ASC),
  CONSTRAINT `fk_demandes_gardes_gardes1`
    FOREIGN KEY (`garde_id`)
    REFERENCES `gardes` (`id`)
    ON DELETE CASCADE
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_demandes_gardes_statuts1`
    FOREIGN KEY (`statut_id`)
    REFERENCES `statuts` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

我明白了:

  

#1005 - 无法创建表'test_db.demandes_gardes'(错误号:150)

请帮忙吗? 谢谢

1 个答案:

答案 0 :(得分:1)

请确保statutsgardes表将id列设置为主键。我测试了相同的代码,只有当其中一个外键不是自己的表中的主键时才收到1005错误。这假设有一个有效的statuts和gardes表,每个表都有一个整数id列。

ALTER TABLE `statuts` 
CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`id`);

ALTER TABLE `gardes` 
CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`id`);