2010-10-04 20 views
1

J'ai des problèmes avec la création de tables & clé étrangère. (errno: 150) Voici une capture d'écran Image mise à jour: http://img264.imagevenue.com/img.php?image=14866_db_122_223lo.jpgMySql: Problème simple avec la création de tables et de clés étrangères

Peut-être que le problème est la conception de la base de données.

-- ----------------------------------------------------- 
-- Table `mydb`.`projekt_user` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_user` (
    `UserID` INT NOT NULL , 
    `Name` VARCHAR(45) NULL , 
    PRIMARY KEY (`UserID`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`projekt_auswahl` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_auswahl` (
    `UserID` INT NOT NULL , 
    `projekt_id` INT NOT NULL , 
    `projekt_kategorie_id` INT NOT NULL , 
    `projekt_attachment` VARCHAR(45) NULL , 
    PRIMARY KEY (`UserID`, `projekt_id`, `projekt_kategorie_id`) , 
    INDEX `UserID` (`UserID` ASC) , 
    CONSTRAINT `UserID` 
    FOREIGN KEY (`UserID`) 
    REFERENCES `mydb`.`projekt_user` (`UserID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`projekt_kategorien` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_kategorien` (
    `projekt_kategorie_id` INT NOT NULL , 
    `kategorie` VARCHAR(45) NULL , 
    PRIMARY KEY (`projekt_kategorie_id`) , 
    INDEX `projekt_kategorie_id` (`projekt_kategorie_id` ASC) , 
    CONSTRAINT `projekt_kategorie_id` 
    FOREIGN KEY (`projekt_kategorie_id`) 
    REFERENCES `mydb`.`projekt_auswahl` (`projekt_kategorie_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `mydb`.`projekte` 
-- ----------------------------------------------------- 
CREATE TABLE `projekte` (
    `projekt_id` INT NOT NULL , 
    `projektname` VARCHAR(45) NULL , 
    `projekt_status` VARCHAR(45) NULL , 
    PRIMARY KEY (`projekt_id`) , 
    INDEX `projekt_id` (`projekt_id` ASC) , 
    CONSTRAINT `projekt_id` 
    FOREIGN KEY (`projekt_id`) 
    REFERENCES `mydb`.`projekt_auswahl` (`projekt_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
+0

L'URL demandée /aAfkjfp01fo1i-16490/loc901/14094_db_122_901lo.jpg est introuvable sur ce serveur. – Wrikken

+0

image url mise à jour – elmanino

Répondre

1

Vous avez vos clés étrangères dans la mauvaise direction, et la nécessité de charger les tables pour (les parents avant les enfants):

-- ----------------------------------------------------- 
-- Table `mydb`.`projekt_user` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_user` (
    `UserID` INT NOT NULL , 
    `Name` VARCHAR(45) NULL , 
    PRIMARY KEY (`UserID`)) 
ENGINE = InnoDB; 

-- ----------------------------------------------------- 
-- Table `mydb`.`projekt_kategorien` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_kategorien` (
    `projekt_kategorie_id` INT NOT NULL , 
    `kategorie` VARCHAR(45) NULL , 
    PRIMARY KEY (`projekt_kategorie_id`) , 
    INDEX `projekt_kategorie_id` (`projekt_kategorie_id` ASC) 
ENGINE = InnoDB; 

-- ----------------------------------------------------- 
-- Table `mydb`.`projekte` 
-- ----------------------------------------------------- 
CREATE TABLE `projekte` (
    `projekt_id` INT NOT NULL , 
    `projektname` VARCHAR(45) NULL , 
    `projekt_status` VARCHAR(45) NULL , 
    PRIMARY KEY (`projekt_id`) , 
    INDEX `projekt_id` (`projekt_id` ASC)) 
ENGINE = InnoDB; 

-- ----------------------------------------------------- 
-- Table `mydb`.`projekt_auswahl` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `projekt_auswahl` (
    `UserID` INT NOT NULL , 
    `projekt_id` INT NOT NULL , 
    `projekt_kategorie_id` INT NOT NULL , 
    `projekt_attachment` VARCHAR(45) NULL , 
    PRIMARY KEY (`UserID`, `projekt_id`, `projekt_kategorie_id`) , 
    INDEX `UserID` (`UserID` ASC) , 
    CONSTRAINT `UserID` 
    FOREIGN KEY (`UserID`) 
    REFERENCES `projekt_user` (`UserID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
CONSTRAINT `projekt_kategorie_id` 
    FOREIGN KEY (`projekt_kategorie_id`) 
    REFERENCES `projekt_kategorien` (`projekt_kategorie_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
CONSTRAINT `projekt_id` 
    FOREIGN KEY (`projekt_id`) 
    REFERENCES `projekte` (`projekt_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

Si j'avais payé plus d'attention à la DRE que vous avez fourni, je J'ai vu que les "pieds des corbeaux" étaient pointés vers le haut, quand la convention est toujours dirigée vers le bas (ou vers la gauche si nécessaire).

+0

merci! Tu es incroyable! – elmanino

+0

@elmanino: Merci - très facile à diagnostiquer avec les scripts que vous avez fournis. –