2010-07-23 39 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; 

tôi đã nhận lỗilỗi sql 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>) 

có thể bất cứ ai cho tôi biết cái nào là vấn đề?

Trả lời

142

Bạn có hai giới hạn gọi là company.cid_FK. Đổi tên một.

+7

Tại sao MySQL Workbench không kiểm tra điều này là vượt ra ngoài tôi. :( – eaj

+6

MySQL Workbench thực hiện công việc rất kém trong việc ngăn chặn/giải thích các lỗi MySQL ... –

48

Đối với các lỗi như thế này, bạn có thể tìm thêm thông tin với 'lỗi'. ví dụ:

shell $ perror 121 

MySQL mã lỗi 121: chìa khóa trùng lặp trên viết hoặc cập nhật
Win32 mã lỗi 121: Khoảng thời gian chờ semaphore đã hết hạn.

+4

Trừ khi bạn đang sử dụng máy Windows. :-( –

+1

cảm ơn bạn, điều này cực kỳ hữu ích! – hgolov

Các vấn đề liên quan