MySQL Workbench 数据库错误

Posted

技术标签:

【中文标题】MySQL Workbench 数据库错误【英文标题】:MySQL Workbench Database error 【发布时间】: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图

【问题讨论】:

在截断表后尝试执行查询,它可能会工作 【参考方案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

【讨论】:

以上是关于MySQL Workbench 数据库错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Workbench 将 MS Access 迁移到 MySQL 时出现日期时间错误

MySQL Workbench ALTER 错误?

MySQLdb 错误:使用 MySQL Workbench 的“未知数据库 Python”

MySQL Workbench 错误:在“读取初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:0

在 Mac OS 上的 MySQL Workbench 上删除数据库时出现错误 1010

MySQL Workbench 中的正向工程数据库 - 错误 1304:FUNCTION GET_NEXT_SEQ 已存在