2015-02-07 130 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
  • 產品
  • 調查
相關問題