2010-07-23 11 views
75
CREATE TABLE `users` (
    `UID` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
    `username` VARCHAR(45) NOT NULL , 
    `password` VARCHAR(100) NULL , 
    `name` VARCHAR(100) NULL , 
    `gender` BIT NULL , 
    `email` VARCHAR(255) NULL , 
    `phone` VARCHAR(30) NOT NULL , 
    `verified` BIT NOT NULL DEFAULT 0 , 
    `time_zone` INT NULL , 
    `time_register` DATETIME NULL , 
    `time_active` DATETIME NULL , 
    PRIMARY KEY (`UID`) , 
    UNIQUE INDEX `username_UNIQUE` (`username` ASC) , 
    INDEX `verified_INDEX` (`verified` ASC)) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8; 


-- ----------------------------------------------------- 
-- Table `companies` 
-- ----------------------------------------------------- 
CREATE TABLE `companies` (
    `CID` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
    `name` VARCHAR(45) NOT NULL , 
    `address` VARCHAR(100) NULL , 
    `email` VARCHAR(255) NULL , 
    `phone` VARCHAR(30) NULL , 
    `link` TEXT NULL , 
    `image_small` TEXT NULL , 
    `image_large` TEXT NULL , 
    `yahoo` VARCHAR(100) NULL , 
    `linkin` VARCHAR(100) NULL , 
    `twitter` VARCHAR(20) NULL , 
    `description` TEXT NULL , 
    `shoutout` VARCHAR(140) NULL , 
    `verified` BIT NOT NULL DEFAULT 0 , 
    PRIMARY KEY (`CID`) , 
    INDEX `name_INDEX` (`name` ASC) , 
    INDEX `verified_INDEX` (`verified` ASC)) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8; 

-- ----------------------------------------------------- 
-- Table `products` 
-- ----------------------------------------------------- 
CREATE TABLE `products` (
    `PID` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
    `CID` INT UNSIGNED NOT NULL , 
    `name` VARCHAR(100) NULL , 
    `description` TEXT NULL , 
    `image_small` TEXT NULL , 
    `image_large` TEXT NULL , 
    `tag` VARCHAR(45) NULL , 
    `price` DECIMAL(11,2) NULL , 
    PRIMARY KEY (`PID`) , 
    INDEX `tag_INDEX` (`tag` ASC) , 
    INDEX `company.cid_FK` (`CID` ASC) , 
    CONSTRAINT `company.cid_FK` 
    FOREIGN KEY (`CID`) 
    REFERENCES `companies` (`CID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8; 

-- ----------------------------------------------------- 
-- Table `users_companies` 
-- ----------------------------------------------------- 
CREATE TABLE `users_companies` (
    `UID` INT UNSIGNED NOT NULL , 
    `CID` INT UNSIGNED NOT NULL , 
    `role` INT UNSIGNED NULL , 
    PRIMARY KEY (`CID`, `UID`) , 
    INDEX `users.uid_FK` (`UID` ASC) , 
    INDEX `company.cid_FK` (`CID` ASC) , 
    CONSTRAINT `users.uid_FK` 
    FOREIGN KEY (`UID`) 
    REFERENCES `users` (`UID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `company.cid_FK` 
    FOREIGN KEY (`CID`) 
    REFERENCES `companies` (`CID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8; 

Ich habe FehlerSQL-Fehler errno: 121

#1005 - Can't create table 'wew.users_companies' (errno: 121) (<a href="server_engines.php?engine=InnoDB&amp;page=Status&amp;token=3f35afdea97dd11f6b4ec1b669816738">Details...</a>) 

kann mir jemand sagen, welches das Problem ist?

Antwort

142

Sie haben zwei Bedingungen namens company.cid_FK. Benennen Sie einen um.

+7

Warum MySQL Workbench dies nicht überprüft, übertrifft mich. :( – eaj

+6

MySQL Workbench hat eine sehr schlechte Arbeit bei der Verhinderung/Erklärung von MySQL Fehlern ... –

48

Für solche Fehler finden Sie weitere Informationen mit 'perror'. d.h.

shell $ perror 121 

MySQL Fehlercode 121: Duplizieren Taste auf Schreib- oder aktualisieren
Win32-Fehlercode 121: Der Semaphor-Timeout-Periode abgelaufen ist.

+4

Es sei denn, Sie sind auf einer Windows Maschine. :-( –

+1

Danke, das ist sehr hilfreich! – hgolov