制作表-mysql时出错

时间:2010-10-12 00:25:10

标签: mysql sql mysql-error-1005

错误是:无法创建表c.handsets

我如何找到问题?

我创建了一个数据库,我发现我的其他表是在其中创建的,但只有一个表给我这个错误。

1 个答案:

答案 0 :(得分:1)

外键必须满足条件:

  • 您必须在两个表中使用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
);