MYSQL Workbench - 错误:错误 1215:无法添加外键约束

Posted

技术标签:

【中文标题】MYSQL Workbench - 错误:错误 1215:无法添加外键约束【英文标题】:MYSQL Workbench - ERROR: Error 1215: Cannot add foreign key constraint 【发布时间】:2016-07-01 21:09:19 【问题描述】:

我正在尝试在 mysql Workbench 上对数据库进行正向工程,但我不断收到此错误消息。我觉得这很可能是我的人际关系结构的问题,但我找不到差异。

这是架构图的图像。

这是我收到的错误消息:

    Executing SQL script in server
ERROR: Error 1215: Cannot add foreign key constraint
SQL Code:
        -- -----------------------------------------------------
        -- Table `bturpin`.`THREAD`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `bturpin`.`THREAD` (
          `id` INT NOT NULL AUTO_INCREMENT,
          `answer` DOUBLE NULL,
          `comment` VARCHAR(255) NULL,
          `test_subcategory_name` VARCHAR(45) NULL,
          `RATING_id` INT NOT NULL,
          `RATING_INSTRUCTOR_id` VARCHAR(30) NOT NULL,
          `RATING_INSTRUCTOR_LESSON_title` VARCHAR(45) NOT NULL,
          `RATING_INSTRUCTOR_LESSON_COURSE_num` VARCHAR(15) NOT NULL,
          `RATING_RATER_id` VARCHAR(30) NOT NULL,
          PRIMARY KEY (`id`, `RATING_id`, `RATING_INSTRUCTOR_id`, `RATING_INSTRUCTOR_LESSON_title`, `RATING_INSTRUCTOR_LESSON_COURSE_num`, `RATING_RATER_id`),
          INDEX `fk_THREAD_RATING1_idx` (`RATING_id` ASC, `RATING_INSTRUCTOR_id` ASC, `RATING_INSTRUCTOR_LESSON_title` ASC, `RATING_INSTRUCTOR_LESSON_COURSE_num` ASC, `RATING_RATER_id` ASC),
          CONSTRAINT `fk_THREAD_RATING1`
            FOREIGN KEY (`RATING_id` , `RATING_INSTRUCTOR_id` , `RATING_INSTRUCTOR_LESSON_title` , `RATING_INSTRUCTOR_LESSON_COURSE_num` , `RATING_RATER_id`)
            REFERENCES `bturpin`.`RATING` (`id` , `INSTRUCTOR_id` , `INSTRUCTOR_LESSON_title` , `INSTRUCTOR_LESSON_COURSE_num` , `RATER_id`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

SQL script execution finished: statements: 14 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

【问题讨论】:

MySQL Error 1215: Cannot add foreign key constraint的可能重复 确保RATING(id , INSTRUCTOR_id , INSTRUCTOR_LESSON_title , INSTRUCTOR_LESSON_COURSE_num , RATER_id) 上有一个复合索引 您只能有一个引用唯一字段的外键。而且我还建议您是否可以尝试使外键和引用键的数据类型和长度相同? 【参考方案1】:

尝试按此顺序转发:

    在 MySQL WB 中手动创建必须具有外键约束的字段 将工程师转发到您的数据库 在 MySQL WB 中手动创建外键约束 再次成为正向工程师

您也可以考虑只使用整数外键。

这似乎是 MySQL Workbench 问题,非整数键上有外键。

来源:Error 1215: Cannot add foreign key constraint

【讨论】:

以上是关于MYSQL Workbench - 错误:错误 1215:无法添加外键约束的主要内容,如果未能解决你的问题,请参考以下文章

MySQL Workbench gnome-keyring-daemon错误的解决

使用MySQL Workbench查询超时的错误

从 MSSQL 迁移到 MYSQL 错误 1064 MYSQL Workbench

使用 Workbench 将 MS Access 迁移到 MySQL 时出现日期时间错误

MySQL Workbench 数据库错误

MySQL Workbench ALTER 错误?