MySQL WorkBench上的错误代码1022
错误代码1022出现在MySQL WorkBench中的问题是由于重复使用了现有的约束名称(id_administrador已经在表cadastro_usuario中用作约束名称,而CNPJ在表exemplar中使用),因此您需要为约束提供唯一的名称(在这里我将它们重命名为cf_id_administrador/CF_CNPJ)。
解决方法如下:
-- -----------------------------------------------------
-- Table `mydb`.`cadastro_fornecedor`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`cadastro_fornecedor` (
`id_cadastro` INT NOT NULL AUTO_INCREMENT,
`data` DATETIME NULL,
`id_administrador` INT NULL,
`CNPJ` VARCHAR(45) NULL,
PRIMARY KEY (`id_cadastro`),
INDEX `id_administrador_idx` (`id_administrador` ASC),
INDEX `CNPJ_idx` (`CNPJ` ASC),
CONSTRAINT `cf_id_administrador`
FOREIGN KEY (`id_administrador`)
REFERENCES `mydb`.`administrador` (`id_administrador`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `CF_CNPJ`
FOREIGN KEY (`CNPJ`)
REFERENCES `mydb`.`fornecedores` (`CNPJ`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
简而言之,您需要为表cadastro_fornecedor中的约束提供独特的名称,以解决错误代码1022的问题。