MySQL 重复的键名

Tom*_*mer 5 mysql foreign-keys duplicates

为了所有神圣的爱,我无法弄清楚为什么我会收到这个错误:

错误:重复的键名称“Row_In”
SQL状态:42000
错误代码:1061

当我尝试在 MySQL 中创建此表时:

CREATE TABLE Row_In(
Rower_Email VARCHAR(25) NOT NULL, 
Boat_Name VARCHAR(25) NOT NULL,
Race_time TIME NOT NULL,
Reg_name VARCHAR(25) NOT NULL,
Reg_Date DATE NOT NULL,
Rower_Position ENUM('1','2','3','4','5','6','7','8', 'C') NOT NULL,
Boat_College VARCHAR(25) NOT NULL,
Boat_Gender ENUM('M','W') NOT NULL,
PRIMARY KEY (Rower_Email, Boat_Name, Race_Time, Reg_Name, Reg_Date, Rower_Position, Boat_College, Boat_Gender),
FOREIGN KEY Row_In(Rower_Email) REFERENCES User(Primary_Email),
FOREIGN KEY Row_In(Boat_Name, Boat_Gender, Boat_College) REFERENCES BOAT(Name, Team_Gender, Team_College),
FOREIGN KEY Row_In(Race_time,  Reg_name ,Reg_Date) REFERENCES RACE(Race_Time, Reg_Name, Reg_Date)
);
Run Code Online (Sandbox Code Playgroud)

我相信我已经将问题缩小到最终的外键,引用了 RACE。我能够创建另一个具有相同外键的表,但我无法让它在该表中工作。

请帮忙。

Der*_*k W 4

您对三个外键使用相同的index_name 。 Row_In

MySQL 中外键定义的语法如下:

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]
Run Code Online (Sandbox Code Playgroud)

试试这个:

FOREIGN KEY (Rower_Email) 
        REFERENCES User(Primary_Email),
FOREIGN KEY (Boat_Name, Boat_Gender, Boat_College) 
        REFERENCES BOAT(Name, Team_Gender, Team_College),
FOREIGN KEY (Race_time,  Reg_name ,Reg_Date) 
        REFERENCES RACE(Race_Time, Reg_Name, Reg_Date)
Run Code Online (Sandbox Code Playgroud)

  • 你是一个巫师。我将以你的名字命名我的第一个儿子。 (5认同)
  • @TomKreamer,你现在有 Derek W 吗? (3认同)
  • 好吧,你不必这样做。但绿色复选标记就可以了!;-) (2认同)