mysql - MySQL 错误代码 1215:无法添加外部约束
问题描述
创建表时遇到错误代码1215:“无法添加外键约束”,我尝试了以下方法,都失败了
- 检查不同表中的两个变量是否具有相同的类型
- 将 EIGINE 设置为 InnoDB 并设置所有相同的 CHARSET
- 检查您是否尝试引用没有
key
或unique
SET FOREIGN_KEY_CHECKS = 0;
禁用检查。- 拼写错误
我也使用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;
解决方案
请创建如下所示的子表,因为缺少父表的参考列:
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;
推荐阅读
- rx-swift - 如何在 RxSwift 中使用闭包链接可完成项?
- reactjs - 如果前端托管在一个域上,后端托管在另一个域上,是否可以发送 JWT 令牌?
- java - REST 保证的 JSON 输出
- lua - 尝试查找玩家的 playergui 组件时尝试索引 nil 错误
- reactjs - React-如何将状态从一个组件传递到另一个组件
- android - Google Play 商店 - 是否必须在发布前报告中修复警告?
- python - Django:上传图像的困难
- python - 滚动条添加填充 tkinter
- tensorflow - 如何在随机数据实验中减少损失并提高准确性?
- angular - 在将文件保存到存储之后,如何处理与调用在 Firestore 上创建新对象的方法相关的错误情况?