MySQL错误:无法创建表(errno: 121 "在写入或更新时出现重复键值")。

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

enter image description here

当我将代码放入phpMyAdmin时,它显示错误(#1005 - 无法创建表wypozyczalnia.wypozyczenie (errno:121 "在写入或更新时发生重复键"))。
问题出在哪里? :( 外键 - 表wypozyczenie

enter image description here

错误来自代码的这部分:

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[...]

1
正如错误信息所说:您必须已经两次使用了相同的约束名。这个约束甚至可能在不同的表中。 - Shadow
1个回答

8
正如错误信息所说:您必须已经两次使用了相同的约束名。即使约束可能在不同的表中,因为约束名称必须在数据库中是唯一的

CONSTRAINT symbol

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接