Can';t使用外键创建表-MySQL错误150

Can';t使用外键创建表-MySQL错误150,mysql,Mysql,我很难理解为什么在以下代码段中出现MySQL代码错误150: -- Exercise Categories CREATE TABLE Exercise_cat ( ec_id INT NOT NULL AUTO_INCREMENT, name VARCHAR(25), PRIMARY KEY (ec_id) ); -- This inserts fine -- Exercise Descriptions CREATE TABLE Exercise_desc ( e_i

我很难理解为什么在以下代码段中出现MySQL代码错误150:

-- Exercise Categories
CREATE TABLE Exercise_cat
(
ec_id       INT NOT NULL AUTO_INCREMENT,
name        VARCHAR(25),
PRIMARY KEY (ec_id)
);
-- This inserts fine

-- Exercise Descriptions
CREATE TABLE Exercise_desc
(
e_id        INT NOT NULL AUTO_INCREMENT,
name        VARCHAR(25),
ec_id       INT NOT NULL,
cal_per_hour    INT NOT NULL,
PRIMARY KEY (e_id),
FOREIGN KEY (ec_id) REFERENCES Excercise_cat(ec_id)
);
-- ERROR (foreign key constraint not formed)
我没有删除列名,如中所示。
我有分号,正如MySQL所希望的那样


如何修复外键以便创建表?

您的意思是
Exercise\u cat
不是
Exercise\u cat

CREATE TABLE Exercise_desc
(
    e_id        INT NOT NULL AUTO_INCREMENT,
    name        VARCHAR(25),
    ec_id       INT NOT NULL,
    cal_per_hour    INT NOT NULL,
    PRIMARY KEY (e_id),
    FOREIGN KEY (ec_id) REFERENCES Exercise_cat(ec_id)
);

您正在引用的表不存在。但是运动是存在的。

因此,下面的行应该被更正

FOREIGN KEY (ec_id) REFERENCES Excercise_cat(ec_id)
                                 ^
                                 |
                                 +-- Remove this extra 'c'

你的外键上有打字错误吗?桌上运动猫不存在-它不应该是运动猫吗?我看着他们,想知道为什么他们的例子对我有效。我看到的最大区别是自动增量,但我不知道这是否重要。你说得对,马修!我觉得有点傻。回答这个问题,我会接受的。