MySQL Workbench 使用以下 SQL 语句创建表格:
我真的看不出这里有任何重复的键。只定义了一个键!
我正在运行MySQL 5.6,使用全新的默认安装。错误日志中没有任何内容。
有什么想法吗?
编辑:通过逐步排除的过程(回到表的最简单定义,然后逐渐添加位元组),问题似乎出在这一部分:
CREATE TABLE IF NOT EXISTS `mydb`.`errors_reports` (
`error_id` INT NOT NULL ,
`report_short` VARCHAR(15) NOT NULL ,
PRIMARY KEY (`error_id`, `report_short`) ,
INDEX `error_id_idx` (`error_id` ASC) ,
INDEX `report_short_idx` (`report_short` ASC) ,
CONSTRAINT `error_id`
FOREIGN KEY (`error_id` )
REFERENCES `mydb`.`errors` (`error_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `report_short`
FOREIGN KEY (`report_short` )
REFERENCES `mydb`.`reports` (`report_short` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
我认为这看起来不错,而且我的数据库中还有很多其他非常相似的表,MySQL创建它们也很顺利。
但是这个表格......
ERROR 1022 (23000): Can't write; duplicate key in table 'errors_reports'
我真的看不出这里有任何重复的键。只定义了一个键!
我正在运行MySQL 5.6,使用全新的默认安装。错误日志中没有任何内容。
有什么想法吗?
编辑:通过逐步排除的过程(回到表的最简单定义,然后逐渐添加位元组),问题似乎出在这一部分:
CONSTRAINT `error_id`
FOREIGN KEY (`error_id` )
REFERENCES `mydb`.`errors` (`error_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
这特别奇怪,因为在几个其他表定义中有相同的代码,而那些是完全正常的!