mysql - 错误代码: 1826. Duplicate foreign key constraint name 'menu_ibfk_1'

标签 mysql sql compiler-errors runtime-error error-code

我在MySQL上编写代码,这给了我错误。
这是我的代码,它给我错误-“错误代码:1826。重复的外键约束名称'menu_ibfk_1'”
当我给一个不同的约束名称时,它给我一个错误-“错误代码:1822。无法添加外键约束。在引用表'menu'中缺少约束'menu_ibfk_2'的索引”

create database WasteManagement;
CREATE TABLE WasteManagement.Faculty_login ( 
Faculty_ID int(9) NOT NULL  ,
FName varchar(50) DEFAULT NULL,
Department varchar(20) DEFAULT NULL, 
Password varchar(20) DEFAULT NULL, 
PRIMARY KEY (Faculty_ID) );

CREATE TABLE WasteManagement.Student_login ( 
Enrollment_No int(11) NOT NULL , 
SName varchar(50) DEFAULT NULL, 
Course varchar(20) DEFAULT NULL, 
Password varchar(20) DEFAULT NULL, 
PRIMARY KEY (Enrollment_No) );

CREATE TABLE WasteManagement.Staff_login ( 
Staff_ID int(9) NOT NULL  ,
CName varchar(50) DEFAULT NULL,
Username varchar(20) DEFAULT NULL, 
Password varchar(20) DEFAULT NULL, 
PRIMARY KEY (Staff_ID) );

CREATE TABLE WasteManagement.Menu ( 
Staff_ID int(9) NOT NULL,
Datee date NOT NULL DEFAULT 0,
Timee varchar(10) NOT NULL,
Dish varchar(30) NOT NULL, 
PRIMARY KEY (Datee, Timee, Dish)
#FOREIGN KEY (Staff_ID) References Menu(Staff_ID) 
);

CREATE TABLE WasteManagement.Demand1 ( 
Datee date NOT NULL DEFAULT 0,
Timee varchar(10) NOT NULL,
Dish varchar(30) NOT NULL, 
S_demand BOOLEAN DEFAULT FALSE, 
PRIMARY KEY (Datee, Timee, Dish, S_demand),
KEY d1 (datee),
KEY t1 (Timee),
KEY dish1 (Dish),
#KEY `AuthorID` (`AuthorID`),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Datee) References Menu(Datee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Timee) References Menu(Timee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Dish) References Menu(Dish));

CREATE TABLE WasteManagement.Demand2 ( 
Datee date NOT NULL DEFAULT 0,
Timee varchar(10) NOT NULL,
Dish varchar(30) NOT NULL, 
F_demand BOOLEAN NOT NULL DEFAULT FALSE, 
PRIMARY KEY (Datee, Timee, Dish, F_demand),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Datee) References Menu(Datee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Timee) References Menu(Timee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Dish) References Menu(Dish));

CREATE TABLE WasteManagement.Feedback1 ( 
Datee date NOT NULL DEFAULT 0,
Timee varchar(10) NOT NULL,
Dish varchar(30) NOT NULL, 
eaten_by1 int(7) NOT NULL, 
s_rating int(1) NOT NULL,
PRIMARY KEY (Datee, Timee, Dish, eaten_by1, s_rating),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Datee) References Menu(Datee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Timee) References Menu(Timee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Dish) References Menu(Dish));

CREATE TABLE WasteManagement.Feedback2 ( 
Datee date NOT NULL DEFAULT 0,
Timee varchar(10) NOT NULL,
Dish varchar(30) NOT NULL, 
eaten_by2 int(7) NOT NULL, 
f_rating int(1) NOT NULL,
PRIMARY KEY (Datee, Timee, Dish, eaten_by2, f_rating),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Datee) References Menu(Datee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Timee) References Menu(Timee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Dish) References Menu (Dish));

CREATE TABLE WasteManagement.Wastage ( 
Datee date NOT NULL DEFAULT 0,
Timee varchar(10) NOT NULL,
Dish varchar(30) NOT NULL, 
Produced_qty int(7) NOT NULL, 
Wasted_qty int(7) NOT NULL,
PRIMARY KEY (Datee, Time, Dish, Produced_qty, Wasted_qty),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Datee) References Menu(Datee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Timee) References Menu(Timee),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (Dish) References Menu(Dish));
这是MySQL输出的快照
MySQL output snapshot
我究竟做错了什么?

最佳答案

外键必须引用完整键:

FOREIGN KEY (Datee, Timee, Dish) References Menu(Datee, Timee, Dish)
并且每个约束必须具有其自己的唯一名称。

关于mysql - 错误代码: 1826. Duplicate foreign key constraint name 'menu_ibfk_1' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65039873/

相关文章:

php - 流交互 As3 -> PHP -> Mysql -> C++

mysql - 尝试修改 MySQL 中的表时出错

PHP/SQL - 如果 ID 在 foreach() 中相同,则将值加在一起

android - 编译 AOSP 错误 : make: [out/build-aosp_arm. 忍者] 被杀死

c++ - 为什么我的 vector 下标超出范围?

mysql - Sql - IN 运算符行为返回各种结果

mysql - 合并 SQL SELECT 结果中的列

sql - 在 oracle 中是否有等同于 concat_ws 的东西?

MySQL:仅从查询数据集中获取条件行

android - 为什么 NotificationManager 不接受我的通知