MySQL错误:无法创建表(错误:121“写入或更新时出现重复键”)
问题描述:
我使用MySQL Workbench为数据库生成图表和代码。MySQL错误:无法创建表(错误:121“写入或更新时出现重复键”)
当我把代码到phpMyAdmin,它显示错误(#1005 - 无法创建表wypozyczalnia
wypozyczenie
(错误:121 “上写或更新重复键”))
在哪里问题是什么? :( 外键 - 表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[...]
答
由于错误消息说:你必须使用相同的约束名称两次约束。因为约束名称must be unique in a database:
CONSTRAINT symbol
If the CONSTRAINT symbol clause is given, the symbol value, if used, must be unique in the database. A duplicate symbol results in an error. If the clause is not given, or a symbol is not included following the CONSTRAINT keyword, a name for the constraint is created automatically.
由于错误消息sa y:你必须两次使用相同的约束名称。约束甚至可能在不同的表格中。 – Shadow