2015-05-08 145 views
0

我試着通讀這裏的一些其他線程,我似乎沒有做任何錯誤。您能否就我在這裏做錯的事情給出一些見解?創建表時MySQL錯誤號爲150

這是我的學生表(創建就好了):

-- STUDENT TABLE 
    CREATE TABLE student 
    (
    studentID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    fname VARCHAR(50) NOT NULL, 
    lname VARCHAR(50) NOT NULL, 
    email VARCHAR(100) NOT NULL, 
    phone VARCHAR(20) NOT NULL 
    ); 

這是我的分組表(拋出錯誤150):

-- GROUP TABLE 
    CREATE TABLE wa_group (
    groupID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    groupName VARCHAR(255) NOT NULL, 
    groupDetail VARCHAR(512) NOT NULL, 
    groupSize INT NOT NULL DEFAULT 100, 
    adminID INT NOT NULL, 
    FOREIGN KEY (adminID) 
     REFERENCES student (studentID) 
     ON DELETE SET NULL ON UPDATE SET NULL 
    ); 

回答

1

你列

adminID INT NOT NULL 

根據您的定義不允許null值。

但後來你定義

ON DELETE SET NULL 
ON UPDATE SET NULL 

這是行不通的。允許null或在刪除和更新時不將其設置爲null

+0

哈,誰曾想過!好的趕上!謝謝一堆。 :) –

0

確保外鍵引用的表存在和它的引擎支持外鍵(即不能從InnoDB的那些引用的MyISAM表。)

+0

謝謝,但這兩個表使用InnoDB並支持外鍵。正如@juergen d –

+0

指出的那樣,這個問題更符合邏輯。我並不感到驚訝,我只是不確定MySQL是否會在創建時捕獲它,或者會等到第一次觸發這些操作,所以我想我可能也會提出這種可能性。 – Uueerdo

+0

在這裏也是一樣,但我對此相對比較陌生,並沒有開始嘗試使用InnoDB以外的引擎。這幾乎完全支持外鍵和約束,所以非常確定不是這樣。 –