2014-02-18 97 views
1

運行下面的腳本時出現121號錯誤。任何人都有任何線索腳本怎麼了?MYSQL錯誤否121.支持事務,行級鎖定和外鍵

-- ----------------------------------------------------- 
-- Table `Commitment` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `Commitment` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `type` CHAR(1) NOT NULL DEFAULT '0' COMMENT '0:Eco Commitment|1:Community Commitment|etc', 
    `title` VARCHAR(180) NULL DEFAULT NULL, 
    `description` TEXT NULL DEFAULT NULL, 
    `createdById` INT(11) NOT NULL DEFAULT -1, 
    `createdAt` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `updatedById` INT(11) NULL DEFAULT NULL, 
    `updatedAt` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, 
    `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '0:Delete|1:Active|2:Deactive|3:Pending|4:Blocked|5:Suspend|etc', 
    PRIMARY KEY (`id`), 
    INDEX `idxCreatedById` (`createdById` ASC), 
    INDEX `idxUpdatedById` (`updatedById` ASC), 
    CONSTRAINT `fkProductUser1` 
    FOREIGN KEY (`createdById`) 
    REFERENCES `User` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fkProductUser2` 
    FOREIGN KEY (`updatedById`) 
    REFERENCES `User` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
    ENGINE = InnoDB 
    DEFAULT CHARACTER SET = utf8 
    COLLATE = utf8_unicode_ci; 
+2

你不會在其他表中使用'fkProductUser1'或'fkProductUser2'作爲外鍵,對嗎? [(來源)](http://stackoverflow.com/questions/1180660/mysql-errorno-121) –

+1

你的錯誤是與'FOREIGN KEY'約束。檢查引用表的數據類型和列名稱 –

+0

@ChrisForrence是的多數民衆贊成在問題,fkProductUser1不幸在一些其他表中使用。請張貼這個答案接受。 – dev1234

回答

2

錯誤代碼表示這些外鍵名已被使用。我會做的是,使一個關鍵的獨特難忘的,就是用

  • 密鑰類型(IDX,FK,...)
  • 表名
  • 本地列名
  • 引用的列名(或引用表)

在你的情況,你的外鍵可能是

fk_commitment_createdbyid_user_id 
fk_commitment_updatedbyid_user_id