mysql Error 1022 - Can't write; duplicate key in table Ошибка при создании таблицы. Решение

Forums:

Возможные причины ошибки:

  1. При создании таблицы: Если ваша таблица содержит внешний ключ, а значит ограничение, то убедитесь, что имя этого ограничения (CONSTRAINT) не дублируется в врамках базы, например в случае если таблица создаётся кодом вроде такого:
    CREATE TABLE `uploaded_files` (
        `id` INT(11) NOT NULL AUTO_INCREMENT  PRIMARY KEY,
        `path` VARCHAR(2000) NULL DEFAULT NULL COMMENT 'Полное имя файла (т.е. путь к файлу, напр. относительно корня сайта)'  ,
        `idзаписиИзтабилицы1` INT(11) NULL DEFAULT NULL,
        `idзаписиИзтабилицы2` INT(11) NULL DEFAULT NULL,
     
        INDEX `имяиндекса1` (`finalReportID`),
        INDEX `имяиндекса2` (`subsequentReportID`),
        CONSTRAINT `имяОграниченияВнешнегоКлюча1` FOREIGN KEY (`idзаписиИзтабилицы1`) REFERENCES `имятаблицы1` (`idВтабилице1`) ON DELETE CASCADE,
        CONSTRAINT `имяОграниченияВнешнегоКлюча2` FOREIGN KEY (`idзаписиИзтабилицы2`) REFERENCES `имятаблицы2` (`idВтабилице2`) ON DELETE CASCADE
    )
    COLLATE='utf8mb4_general_ci'
    ENGINE=InnoDB
    AUTO_INCREMENT=1
    COMMENT 'Таблица для хранения путей к файлам'
    ;
    

    -- то убедитесь что имена ограничений:

    • имяОграниченияВнешнегоКлюча1
    • имяОграниченияВнешнегоКлюча2

    не дублируются в рамках вашей БД (той для которой создаётся таблица)

Key Words for FKN + antitotal forum (CS VSU):