MYSQL 错误号 121。支持事务、行级锁定和外键

标签 mysql sql database

运行以下脚本时出现错误 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;

最佳答案

错误代码表示这些外键名称已被使用。我要做的是,要使 key 独一无二令人难忘,就是使用

  • key 类型(idx、fk、...)
  • 表名
  • 本地列名
  • 引用的列名(或引用的表)

在您的情况下,您的外键可能是

fk_commitment_createdbyid_user_id
fk_commitment_updatedbyid_user_id

关于MYSQL 错误号 121。支持事务、行级锁定和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21845221/

相关文章:

mysql - MySql匹配的Oracle equalent函数是什么

mysql - 安装过程中phpmyadmin错误1064(42000)

php - MySQL - 需要更好的查询解决方案,极端加载时间

php - JS/PHP 'listener' 触发事件

mysql - 使用 SQL Query 或 Laravel SQL Query Builder 创建表/列组合

mysql - 没有子查询的查询?数据库

php - 当一些用户尝试将信息插入数据库时​​出现重复的 Id 条目 - Php

sql - 将唯一约束应用于 SQL 中的列组合

php - SQLite适合并发阅读吗?

sql - 在预订系统中查找空闲时段