【问题标题】:MySQL Workbench Database errorMySQL Workbench 数据库错误
【发布时间】:2016-08-26 10:08:49
【问题描述】:

我使用 Mysql Qorkbench 创建了一个数据库,我尝试将工程师转发到数据库,但它完成时出现错误,这是消息日志:

> Executing SQL script in server
ERROR: Error 1005: Can't create table `mydb`.`cds` (errno: 121 "Duplicate key on write or update")
SQL Code:
        -- -----------------------------------------------------
        -- Table `mydb`.`CDs`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `mydb`.`CDs` (
          `CDid` INT NOT NULL AUTO_INCREMENT,
          `Titel` VARCHAR(45) NOT NULL,
          `Autor` VARCHAR(45) NOT NULL,
          `Erscheinungsjahr` VARCHAR(45) NOT NULL,
          `Genre` VARCHAR(45) NOT NULL,
          `Stockwerk` VARCHAR(45) NOT NULL,
          `Regal` INT NOT NULL,
          `Ausgeborgt` INT NULL,
          `Rezensionen` VARCHAR(600) NULL,
          `Kurzbeschreibung` VARCHAR(600) NOT NULL,
          PRIMARY KEY (`CDid`),
          UNIQUE INDEX `CDid_UNIQUE` (`CDid` ASC),
          INDEX `Buchungsid_idx` (`Ausgeborgt` ASC),
          CONSTRAINT `Buchungsid`
            FOREIGN KEY (`Ausgeborgt`)
            REFERENCES `mydb`.`Buchung` (`Buchungsid`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

SQL script execution finished: statements: 9 succeeded, 1 failed

Fetching back view definitions in final form.
Could not get definition for mydb.view1 from server
1 views were read back.

这是我Database的EER图

【问题讨论】:

  • 在截断表后尝试执行查询,它可能会工作

标签: mysql sql database xampp


【解决方案1】:

主键本质上是索引的唯一非空约束。正如错误所指出的,您不需要添加额外的唯一约束,实际上也不能。删除额外的唯一索引子句,你应该没问题:

CREATE TABLE IF NOT EXISTS `mydb`.`CDs` (
  `CDid` INT NOT NULL AUTO_INCREMENT,
  `Titel` VARCHAR(45) NOT NULL,
  `Autor` VARCHAR(45) NOT NULL,
  `Erscheinungsjahr` VARCHAR(45) NOT NULL,
  `Genre` VARCHAR(45) NOT NULL,
  `Stockwerk` VARCHAR(45) NOT NULL,
  `Regal` INT NOT NULL,
  `Ausgeborgt` INT NULL,
  `Rezensionen` VARCHAR(600) NULL,
  `Kurzbeschreibung` VARCHAR(600) NOT NULL,
  PRIMARY KEY (`CDid`), -- no need for an extra index
  INDEX `Buchungsid_idx` (`Ausgeborgt` ASC),
  CONSTRAINT `Buchungsid`
    FOREIGN KEY (`Ausgeborgt`)
    REFERENCES `mydb`.`Buchung` (`Buchungsid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

【讨论】:

    猜你喜欢
    • 2014-08-15
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2019-04-02
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    相关资源
    最近更新 更多