【问题标题】:MySQL Error: Can't create table (errno: 121 "Duplicate key on write or update")MySQL 错误:无法创建表(错误号:121“写入或更新时重复键”)
【发布时间】:2016-11-27 21:55:48
【问题描述】:

我使用 MySQL Workbench 为数据库生成图表和代码。

当我将代码放入 phpMyAdmin 时,它显示错误(#1005 - 无法创建表 wypozyczalnia.wypozyczenie (errno: 121 "Duplicate key on write or update"))

问题出在哪里? :( 外键 - 表wypozyczenie

错误来自这部分代码:

CREATE TABLE IF NOT EXISTS `wypozyczalnia`.`wypozyczenie` (
`id_wyp` INT NOT NULL,
`data_wyp` DATE NOT NULL,
`data_odd` DATE NOT NULL,
`id_samochod` INT NOT NULL,
`id_klient` INT NOT NULL,
`id_pracownik` INT NOT NULL,
`id_plac_wyp` INT NOT NULL,
`id_plac_odd` INT NULL,
`cena` INT NULL,
`kaucja` INT NULL,
PRIMARY KEY (`id_wyp`),
INDEX `id_klient_idx` (`id_klient` ASC),
INDEX `id_samochod_idx` (`id_samochod` ASC),
INDEX `id_placowka_idx` (`id_plac_odd` ASC),
INDEX `id_pracownik_idx` (`id_pracownik` ASC),
INDEX `id_plac_wyp_idx` (`id_plac_wyp` ASC),
CONSTRAINT `id_klient_klient`
FOREIGN KEY (`id_klient`)
REFERENCES `wypozyczalnia`.`klient` (`id_klient`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `id_samochod_samochody`
FOREIGN KEY (`id_samochod`)
REFERENCES `wypozyczalnia`.`samochody` (`id_samochod`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `id_placowka_placowka`
FOREI[...]

【问题讨论】:

  • 正如错误消息所说:您必须两次使用相同的约束名称。约束甚至可能在不同的表中。

标签: php mysql sql database


【解决方案1】:

正如错误消息所说:您必须两次使用相同的约束名称。约束甚至可能在不同的表中,因为约束名称must be unique in a database:

约束符号

如果给出了 CONSTRAINT 符号子句,则符号值(如果使用), 在数据库中必须是唯一的。重复的符号会导致 错误。如果没有给出子句,或者没有包含符号 在 CONSTRAINT 关键字之后,为约束创建一个名称 自动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2016-04-23
    • 2012-09-19
    • 2012-10-11
    • 2020-04-10
    • 2010-11-13
    相关资源
    最近更新 更多