mysql - MySQL 错误 1215 无法添加外键约束
问题描述
USE sales;
CREATE TABLE sales
(
purchase_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
date_of_purchase DATE,
customer_id INT,
idem_code VARCHAR(10)
);
CREATE TABLE customers
(
customer_id INT,
first_name VARCHAR(255),
last_name VARCHAR(255),
email_address VARCHAR(255),
number_of_customer INT
);
ALTER TABLE sales
ADD FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE;
我是一个完整的 SQL 初学者。我遇到了 1215 我的 SQL 错误,并尝试了各种方法来修复它,但都是徒劳的。请帮助。
太感谢了。
解决方案
外键约束必须引用某些东西UNIQUE
。
在您的客户表中,这customer_id
是一个简单的INT
,没有任何强制唯一性。
我强烈建议您将表客户定义更改为:
CREATE TABLE customers
(
customer_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, -- <---- Check this line
first_name VARCHAR(255),
last_name VARCHAR(255),
email_address VARCHAR(255),
number_of_customer INT
);
INT NOT NULL PRIMARY KEY AUTO_INCREMENT
是在 MySQL 中编写 INT 主键的常用方法,与您在 table 中所做的相同sales
。您可以使用BIGINT
而不是INT
推荐阅读
- javascript - mongodb将对象添加到对象数组中
- r - 如何在 R 中为两个以上的选项做 ifelse 语句?
- python - 如何正确拆分数字
- docker - Authentication, O Auth 2, Google Cloud Platform COS Container Optimized
- asp.net-core - 如何在 Blazor 的可重用表组件中显示数据
- javascript - 在 Angular 中使用 *ngFor 和 *ngIf 根据索引值切换 div
- .net - ZipArchiveEntry 创建 xlsx 文件,但发现它会丢失 `CompressionOption` 和 `ContentType` 和 `Uri` 和 `Package` 信息
- mysql - 如何从 mysql 数据库中检索行并通过 Express.js 将它们作为 JSON 发送?
- sql - 访问 VBA - 事件更新所有记录,而不仅仅是当前记录
- java - DynamoDB 增强型客户端(非常)第一个请求的启动很慢,可以“选择 1 个”吗?