首页 > 解决方案 > MySQL 错误代码 1215:无法添加外部约束

问题描述

创建表时遇到错误代码1215:“无法添加外键约束”,我尝试了以下方法,都失败了

  1. 检查不同表中的两个变量是否具有相同的类型
  2. 将 EIGINE 设置为 InnoDB 并设置所有相同的 CHARSET
  3. 检查您是否尝试引用没有keyunique
  4. SET FOREIGN_KEY_CHECKS = 0;禁用检查。
  5. 拼写错误

我也使用SHOW ENGINE INNODB STATUS;尝试查找一些错误消息,但这只是一个简单的“无法添加外键约束”。我是 sql 新手,所以我真的不知道我做错了什么。有人可以帮助或指定错误的原因?

这是我的sql代码

CREATE TABLE book(
  book_id char (50),
  book_title char (50),
  PRIMARY KEY (book_title)
) ENGINE = InnoDB DEFAULT CHARSET = latin1;

CREATE TABLE customer(
  book_title char (50) ,
  customer_id char (50),
  PRIMARY KEY (customer_id),
  foreign key (book_title) references book
) ENGINE = InnoDB DEFAULT CHARSET = latin1;

标签: mysql

解决方案


请创建如下所示的子表,因为缺少父表的参考列:

CREATE OR REPLACE TABLE customer(
  book_id int unsigned not null,
  customer_id char (50),
  PRIMARY KEY (customer_id),
  foreign key (book_id) references book (book_id)
) ENGINE = InnoDB DEFAULT CHARSET = latin1; 

推荐阅读