我无法在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)
请帮忙吗? 谢谢
答案 0 :(得分:1)
请确保statuts
和gardes
表将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`);