0
我试图添加一个带有2列的外键。SQL错误1822:无法添加外键约束。约束缺少索引但索引EXISTS
下面是表的DDL引用的外键:
CREATE TABLE IF NOT EXISTS `sf_file_category` (
`id_file_category` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45)
CHARACTER SET 'latin1'
COLLATE 'latin1_general_ci' NOT NULL,
`file_type` ENUM('document', 'image', 'video', 'archive')
CHARACTER SET 'latin1'
COLLATE 'latin1_general_ci' NULL,
`id_file_category_parent` INT UNSIGNED NULL,
PRIMARY KEY (`id_file_category`),
INDEX `fk_sf_file_category_sf_file_category1_idx` (`id_file_category_parent` ASC),
INDEX `fk_sf_file_category_sf_file_idx` (`id_file_category` ASC, `file_type` ASC)
)
ENGINE = InnoDB;
DDL表谁拥有的外键:
CREATE TABLE IF NOT EXISTS `sf_file` (
`id_file` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`fullpath` VARCHAR(100)
CHARACTER SET 'latin1'
COLLATE 'latin1_general_ci' NOT NULL,
`basename` VARCHAR(45)
CHARACTER SET 'latin1'
COLLATE 'latin1_general_ci' NOT NULL,
`accesskey` CHAR(8)
CHARACTER SET 'latin1'
COLLATE 'latin1_general_ci' NOT NULL,
`file_type` ENUM('document', 'image', 'video', 'archive')
CHARACTER SET 'latin1'
COLLATE 'latin1_general_ci' NULL,
`name` VARCHAR(45)
CHARACTER SET 'latin1'
COLLATE 'latin1_general_ci' NULL,
`description` VARCHAR(255)
CHARACTER SET 'latin1'
COLLATE 'latin1_general_ci' NULL,
`id_aircraft_image` SMALLINT UNSIGNED NULL,
`id_aircraft` SMALLINT UNSIGNED NULL,
`id_file_category` INT UNSIGNED NULL,
PRIMARY KEY (`id_file`),
INDEX `fk_sf_file_sf_file_category1_idx` (`id_file_category` ASC, `file_type` ASC),
INDEX `fk_sf_file_sf_aircraft1_idx` (`id_aircraft` ASC),
INDEX `fk_sf_file_sf_aircraft2_idx` (`id_aircraft_image` ASC)
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_general_ci;
尝试执行以下外键语法:
ALTER TABLE `sf_file`
ADD CONSTRAINT `fk_sf_file_sf_file_category1`
FOREIGN KEY (`id_file_category` , `file_type`)
REFERENCES `sf_file_category` (`id_file_category` , `file_type`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
但是我收到此错误: 错误:错误1822:失败添加外键constants。被引用表'sf_file_category'中缺少约束'fk_sf_file_sf_file_category1'的索引。
我假定他是指已经在表sf_file_category中创建的INDEX fk_sf_file_sf_file_category1_idx
(id_file_category
ASC,file_type
ASC)。
是否有任何特定的方式来创建多个字段外键,我失踪?
执行没有任何问题在我的一端。 –
字段的类型及其排序规则应该匹配 –
@GiorgosBetsos您在结尾使用的工具?试过这个唯一的陈述,但仍然得到“[HY000] [1215]无法添加外键约束”... – Aphax