MySQL: Cannot add foreign key constraint in school project 报错

标签 mysql key

我正在为学校项目构建一个非常基本的数据库,但在 MySQL 中出现“无法添加外键约束”错误。在过去的一天里,我一直在为这个问题摸不着头脑,阅读了所有相关的帖子,但一直无法弄清楚。

这是我项目的前两个表:

CREATE TABLE CUSTOMER (
CUST_ID      INTEGER    NOT NULL     AUTO_INCREMENT     UNIQUE,
CUST_LNAME      VARCHAR(25)    NOT NULL,
CUST_FNAME      VARCHAR(25)    NOT NULL,
CUST_INITIAL   CHAR(1),
CUST_STREET_NO   VARCHAR(6),
CUST_STREET_NAME     VARCHAR(25),
CUST_APT_NO     VARCHAR(10),
CUST_CITY     VARCHAR(25),
CUST_STATE     CHAR(2),
CUST_ZIP_CODE     CHAR(5),
CUST_HOME_AC     CHAR(3),
CUST_HOME_PHONE     CHAR(8),
PRIMARY KEY (CUST_ID))
ENGINE = InnoDB;

CREATE TABLE INVOICE (
INVOICE_ID     INTEGER    NOT NULL   AUTO_INCREMENT   UNIQUE,
CUST_ID      INTEGER    NOT NULL,
INV_DATE   DATE    NOT NULL,
SPECIAL_HANDLING   VARCHAR(35),
PRIMARY KEY (INVOICE_ID),
FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER ON UPDATE CASCADE)
ENGINE = InnoDB;

我确定这是我所缺少的 super 简单的东西。有什么想法吗?

最佳答案

您缺少要在外键约束定义中引用的列。

使用:

FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER(CUST_ID) ON UPDATE CASCADE)

代替

FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER ON UPDATE CASCADE)

因此,create table 变为:

CREATE TABLE INVOICE (
INVOICE_ID     INTEGER    NOT NULL   AUTO_INCREMENT   UNIQUE,
CUST_ID      INTEGER    NOT NULL,
INV_DATE   DATE    NOT NULL,
SPECIAL_HANDLING   VARCHAR(35),
PRIMARY KEY (INVOICE_ID),
FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER(CUST_ID) ON UPDATE CASCADE)
ENGINE = InnoDB;

关于MySQL: Cannot add foreign key constraint in school project 报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42420946/

相关文章:

php - 本地主机上的 MySQL 连接被拒绝

mysql简单连接

SSH key : “Permissions 0644 for ' id_rsa. pub' 太开放了。”在苹果机上

c# - 如何通过代码按住Ctrl键

wpf - 将 PreviewKeyDown 中收到的键转换为字符串

java - 带有智能卡 + 本地应用程序进行身份验证的 PHP 站点

mysql - 从较小的任务关键型表更新大表,而不锁定小表

MySQL 索引 eq 到 Key?

JavaScript 对象具有具有特定正则表达式模式的键

php - Laravel 8 中的多用户角色