MySQL Workbench придумала следующий SQL для создания таблицы:MySQL ошибка 1022 при создании таблицы
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,
что особенно странно, как есть идентичный код в нескольких других определениях таблиц, и это абсолютно нормально!
У меня нет никаких проблем с этим запросом .. кажется, что там может быть что-то еще –
Не уверен, что вам нужно явно создать индекс для столбцов FK. У меня создалось впечатление, что создание ссылки создаст индекс. – Kermit
Вывод заявлений INDEX не имеет значения. –