2015-02-07 129 views
-1

我必须创建外部调查表,但它会给出错误。像#1005 - 无法创建表'demo.survey'(错误:150)

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) 
); 
+0

'外键(sfpno)参考产品(PNO)',外键只能引用伯或唯一键,我添加一个唯一的密钥如果你设置外键检查= 0,所以你不必移动表格请参阅http://sqlfiddle.com/#!2/ef3b4 – Mihai 2015-02-07 11:57:51

+0

我尝试根据你的解决方案。这行得通。谢谢... – Choldas 2015-02-09 07:32:42

回答

0

你的表有外键整合其相互引用。所以,创建的顺序很重要,因为如果它存在,只能引用另一个表/列。

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

  1. SurveyCreater(没有外键)
  2. 产品(只引用SurveyCreater)
  3. 调查(参考SurveyCreater和产品)
0

您已经引用了不存在的外键列,这就是为什么mySQl错误150即将来临尝试在以下执行您的创建查询订购。

  • SurveyCreator
  • 产品
  • 调查
相关问题