首页 文章

#1005 - 可以't create table ' demo.survey'(错误号:150)

提问于
浏览
-1

我必须使用外键创建Survey表,但它会出错 . 喜欢

1005 - 无法创建表'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) 
);

2 回答

  • 0

    您的表具有集成的外键,它们相互引用 . 因此,创建的顺序很重要,因为如果它存在,您只能引用另一个表/列 .

    关于您提供的SQL代码,按以下顺序创建表:

    • SurveyCreater(没有外键)

    • 产品(仅供参考SurveyCreater)

    • 调查(参考SurveyCreater和产品)

  • 0

    您已经引用了不存在的外键列,这就是mySQl错误150即将发生的原因尝试按以下顺序执行您的创建查询 .

    • SurveyCreator

    • 产品

    • 调查

相关问题