SQL错误1822:无法添加外键约束。约束缺少索引,但索引已存在

Aphax

我正在尝试添加2列的外键。

这是引用外键的表的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:无法添加外键约束。引用表“ sf_file_category”中约束“ fk_sf_file_sf_file_category1”的缺少索引。

我假设他的意思是在表sf_file_category中已经创建的INDEX fk_sf_file_sf_file_category1_idxid_file_categoryASC,file_typeASC)。

有什么特殊的方法可以创建我所缺少的多字段外键?

Aphax

就像提到的@Pankaj Pandey一样,我的字段声明不完全匹配,id_file_category因为NULL放在一个表NOT NULL上或另一个上会阻止创建外键。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误代码:1822。无法添加外键约束。缺少约束索引

来自分类Dev

错误代码:1822。无法添加外键约束。引用表“地址”中缺少约束“employee_ibfk_1”的索引

来自分类Dev

错误代码:1822。无法添加外键约束。引用表“category”中缺少约束“questions_ibfk_1”的索引

来自分类Dev

MySQL-无法添加外键约束-缺少索引

来自分类Dev

SQL错误#1215-无法添加外键约束

来自分类Dev

SQL错误(1215):无法添加外键约束

来自分类Dev

无法添加外键约束错误1215

来自分类Dev

错误1215,无法添加外键约束

来自分类Dev

无法添加外键约束错误

来自分类Dev

SQL-无法添加外键约束

来自分类Dev

SQL Fiddle - 无法添加外键约束

来自分类Dev

续集错误:缺少约束索引

来自分类Dev

MySQL错误代码:1452在向现有表添加索引和外键约束时

来自分类Dev

错误:错误1215:无法添加外键约束(已尝试了所有方法)

来自分类Dev

无法添加外键约束

来自分类Dev

无法添加外键约束

来自分类Dev

MySQL错误:1215无法添加外键约束

来自分类Dev

PHP MySQL错误创建表:无法添加外键约束

来自分类Dev

错误1215(HY000):无法添加外键约束

来自分类Dev

错误1215(HY000):无法添加外键约束

来自分类Dev

无法添加外键约束错误1215 phpmyadmin

来自分类Dev

MySQL无法添加外键约束错误代码:1215

来自分类Dev

错误代码1215:无法添加外键约束

来自分类Dev

Laravel 7迁移错误。无法添加外键约束

来自分类Dev

2个表的MySQL错误无法添加外键约束

来自分类Dev

错误1215无法在MySQL上添加外键约束

来自分类Dev

MySQL错误代码1215:无法添加外键约束

来自分类Dev

MySQL:错误代码:1215。无法添加外键约束

来自分类Dev

MySQL错误#1215-无法添加外键约束

Related 相关文章

  1. 1

    错误代码:1822。无法添加外键约束。缺少约束索引

  2. 2

    错误代码:1822。无法添加外键约束。引用表“地址”中缺少约束“employee_ibfk_1”的索引

  3. 3

    错误代码:1822。无法添加外键约束。引用表“category”中缺少约束“questions_ibfk_1”的索引

  4. 4

    MySQL-无法添加外键约束-缺少索引

  5. 5

    SQL错误#1215-无法添加外键约束

  6. 6

    SQL错误(1215):无法添加外键约束

  7. 7

    无法添加外键约束错误1215

  8. 8

    错误1215,无法添加外键约束

  9. 9

    无法添加外键约束错误

  10. 10

    SQL-无法添加外键约束

  11. 11

    SQL Fiddle - 无法添加外键约束

  12. 12

    续集错误:缺少约束索引

  13. 13

    MySQL错误代码:1452在向现有表添加索引和外键约束时

  14. 14

    错误:错误1215:无法添加外键约束(已尝试了所有方法)

  15. 15

    无法添加外键约束

  16. 16

    无法添加外键约束

  17. 17

    MySQL错误:1215无法添加外键约束

  18. 18

    PHP MySQL错误创建表:无法添加外键约束

  19. 19

    错误1215(HY000):无法添加外键约束

  20. 20

    错误1215(HY000):无法添加外键约束

  21. 21

    无法添加外键约束错误1215 phpmyadmin

  22. 22

    MySQL无法添加外键约束错误代码:1215

  23. 23

    错误代码1215:无法添加外键约束

  24. 24

    Laravel 7迁移错误。无法添加外键约束

  25. 25

    2个表的MySQL错误无法添加外键约束

  26. 26

    错误1215无法在MySQL上添加外键约束

  27. 27

    MySQL错误代码1215:无法添加外键约束

  28. 28

    MySQL:错误代码:1215。无法添加外键约束

  29. 29

    MySQL错误#1215-无法添加外键约束

热门标签

归档