2014-02-18 40 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