#1005 - 无法创建 table 'demo.survey'(错误号:150)

#1005 - Can't create table 'demo.survey' (errno: 150)

我必须使用外键创建调查 table,但出现错误。喜欢

1005 - 无法创建 table 'demo.survey'(错误号:150)

那我该怎么办..

CREATE TABLE Survey
(
    sno INT NOT NULL AUTO_INCREMENT,
    sname TEXT NOT NULL,
    sfpname VARCHAR(20) NOT NULL,
    sdate TIMESTAMP NOT NULL,
    sfcrno INT NOT NULL,
    sfpno INT NOT NULL,
    FOREIGN KEY(sfpname) REFERENCES Product(pname),
    FOREIGN KEY(sfcrno) REFERENCES SurveyCreater(crno),
    FOREIGN KEY(sfpno) REFERENCES Product(pno),
    PRIMARY KEY(sno)
);

CREATE TABLE SurveyCreater
(
    crno INT NOT NULL AUTO_INCREMENT,
    crname TEXT NOT NULL,
    dob DATE NOT NULL,
    gender TEXT NOT NULL,
    address TEXT,
    city TEXT,
    state TEXT,
    contact TEXT NOT NULL,
    email VARCHAR(30) NOT NULL,
    PRIMARY KEY(crno)               
);
CREATE TABLE Product
(
    pno INT NOT NULL AUTO_INCREMENT,
    pname VARCHAR(20) NOT NULL,
    pdate TIMESTAMP NOT NULL,
    pfcrno INT NOT NULL,
    FOREIGN KEY(pfcrno) REFERENCES SurveyCreater(crno),
    PRIMARY KEY(pno) 
);

您的表集成了相互引用的外键。因此,创建顺序很重要,因为您只能引用另一个 table/column(如果存在)。

根据您提供的 SQL 代码,按以下顺序创建表格:

  1. SurveyCreater(没有外键)
  2. 产品(仅参考 SurveyCreater)
  3. 调查(参考 SurveyCreater 和产品)

您引用了不存在的外键列,这就是为什么 mySQl 出现错误 150 尝试按以下顺序执行您的创建查询。

  • SurveyCreator
  • 产品
  • 调查