2015-11-15 62 views
0

我不能升级我的SQL TEST_DB执行上的phpmyadmin这个查询:#1005 - 无法创建表 'test_db.demandes_gardes'(错误:150)(详细资料...)

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

请确保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`); 
相关问题