错误是:无法创建表 c.handsets
我如何找到问题?
我创建了一个数据库,发现其中创建了我的其他表,但只有一个表给了我这个错误。
外键必须满足的条件:
您必须在两个表中都使用 InnoDB 存储引擎。
两个表中的数据类型必须相同。例如,VARCHAR(250) 与 VARCHAR(255) 不同。
父表中的列必须有 PRIMARY KEY 或 UNIQUE 约束。
您的外键必须以与父表中的 PRIMARY KEY 或 UNIQUE 约束相同的顺序声明相同的列。这是您最有可能出现的问题。
例如,如果这是您的父表:
CREATE TABLE PhoneModels (
make VARCHAR(255),
model VARCHAR(255),
PRIMARY KEY (make, model)
);
以下将是错误的,因为主键有两列,但每个外键都有一列。
CREATE TABLE Handsets
(
...
make VARCHAR(255),
model VARCHAR(255),
FOREIGN KEY (make) REFERENCES PhoneModels(make), // WRONG
FOREIGN KEY (model) REFERENCES PhoneModels(model) // WRONG
);
它不是这样工作的;您应该有一个引用两列的外键。
CREATE TABLE Handsets
(
...
make VARCHAR(255),
model VARCHAR(255),
FOREIGN KEY (make, model) REFERENCES PhoneModels(make, model), // RIGHT
);